我在使用dust.js循环浏览json时遇到了麻烦,这是我的json
{
"Undergraduate":{
"metaid":"0770",
"Offcampus":{
"FeesItems":{
"tuition":{
"label":"Tuition Fees",
"value":"5,870"
},
"comprehensive":{
"label":"Comprehensive Fees",
"value":"2,141"
},
"studentActivity":{
"label":"Student Activity Fees",
"value":"190"
},
"academicExcellence":{
"label":"Academic Excellence Fee",
"value":"225"
},
"room":{
"label":"Room",
"value":"0"
},
"board":{
"label":"Board",
"value":"0"
},
"livingAllowance":{
"label":"Living Allowance",
"value":"9,738"
}
}
}
}
}
我想循环遍历FeesItems对象中的项目。
{#Undergradaute.Offcampus.FeesItems}
{label}, {value}{~n} <!-- What should be given in this line? -->
{/Undergradaute.Offcampus.FeesItems}
答案 0 :(得分:3)
只要FeesItems是一个数组FeesItems
label
呈现value
和FeesItems= []
的项目。
http://akdubya.github.io/dustjs/#guide
{
"Undergraduate":{
"metaid":"0770",
"Offcampus":{
"FeesItems":[{
"label":"Tuition Fees",
"value":"5,870"
},
{
"label":"Comprehensive Fees",
"value":"2,141"
},
...
]
}
}
}
}
以下是“尘埃指南”的示例:
{#friends}
{name}, {age}{~n}
{/friends}
{
friends: [
{ name: "Moe", age: 37 },
{ name: "Larry", age: 39 },
{ name: "Curly", age: 35 }
]
}
更新1:
由于您不希望更改原始JSON,因此需要从原始JSON生成一个新对象
var newModel = Object.keys(obj.Undergraduate.Offcampus.FeesItems).map(function(prop){ return obj.Undergraduate.Offcampus.FeesItems[prop] });
请注意,javascript将保留对象的引用,如果尝试类似的东西:
originalObj.Undergraduate.Offcampus.FeesItems.board.label = "Costa Rica"
console.log(newModel[5].label);
答案 1 :(得分:0)
您可以使用帮助程序迭代对象。
例如,你可以像这样定义一个帮助器:
dust.helpers.iter = function(chunk, context, bodies, params) {
var obj = dust.helpers.tap(params.obj, chunk, context);
var iterable = [];
for (var key in obj) {
if (obj.hasOwnProperty(key)) {
var value = obj[key];
iterable.push({
'$key': key,
'$value': value,
'$type': typeof value
});
}
}
return chunk.section(iterable, context, bodies);
};
然后,在你的模板中,你会像这样循环:
{@iter obj=Undergradaute.Offcampus.FeesItems}
{$value.label}, {$value.value}{~n}
{/iter}