3

我有一个带有动态属性名称的 JSON 对象。如何使用 JsRender 呈现属性名称?我一直在查看 JsRender 演示页面中的示例,但找不到这样做的方法。

例子:

{
    'prop1': '123',
    'prop2': '456'
}

预期输出:

1. prop1 = 123
2. prop3 = 456

JsFiddle:http: //jsfiddle.net/kvuZC/

更新工作 JsFiddle:http: //jsfiddle.net/B76WP/

4

3 回答 3

3

您可以使用助手遍历字段

$.views.helpers({
    getFields: function( object ) {
        var key, value,
            fieldsArray = [];
        for ( key in object ) {
            if ( object.hasOwnProperty( key )) {
                value = object[ key ];
                // For each property/field add an object to the array, with key and value
                fieldsArray.push({
                    key: key,
                    value: value
                });
            }
        }
        // Return the array, to be rendered using {{for ~fields(object)}}
        return fieldsArray;
    }
});

“遍历字段”场景中的代码

{{for ~getFields(details)}}
   <b>{{>key}}</b>: {{>value}}
{{/for}}
于 2013-06-08T09:09:41.060 回答
3

检查 {{props}} 标签,这对解决这个问题非常有用。 https://www.jsviews.com/#propstag

{{props}}
    1. {{>key}} = {{>prop}}
{{/props}}

并且输出将是所需的。

于 2016-07-15T10:37:42.973 回答
2

改变方法。将您的对象映射到将保存您的键和值的对象数组中。

这是应该这样做的代码:

var jsonData = {
    'prop1': '123',
    'prop2': '456'
}
, data = $.map(jsonData, function(value, key) {return {value: value, key: key}});

$('#container').html($('#dynamicObjectTemplate').render(data));

这将创建以下内容:

[{
  value: '123',
  key: 'prop1'
},{
  value: '456',
  key: 'prop2'
}]

这是关于jsfiddle的工作示例(无法通过参考包含 jsrender 代码,所以我粘贴了它......您的代码在底部)

于 2013-06-07T13:34:40.720 回答