我有一个带有动态属性名称的JSON对象。如何使用JsRender呈现属性名称?我一直在查看JsRender演示页面中的示例,但无法找到方法。
示例:
{
'prop1': '123',
'prop2': '456'
}
预期产出:
1. prop1 = 123
2. prop3 = 456
JsFiddle:http://jsfiddle.net/kvuZC/
更新使用JsFiddle:http://jsfiddle.net/B76WP/
答案 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代码,所以我粘贴了它......你的代码位于底部)