如何使用JsRender呈现JSON对象的属性名称?

时间:2013-06-07 06:50:10

标签: jsrender

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

示例:

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

预期产出:

1. prop1 = 123
2. prop3 = 456

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

更新使用JsFiddle:http://jsfiddle.net/B76WP/

3 个答案:

答案 0 :(得分: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;
    }
});

来自'Iterating through fields' scenario的代码

{{for ~getFields(details)}}
   <b>{{>key}}</b>: {{>value}}
{{/for}}

答案 1 :(得分:3)

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

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

,输出将是所需的。

答案 2 :(得分: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代码,所以我粘贴了它......你的代码位于底部)