我想使用車把#each
和一個不是數組的對象。流星和車把#每次迭代對象
我該怎麼做?我需要它仍然與流星的#each
的特殊功能。
我的目標是在形式:
{
john: "hello",
bob: "hi there"
}
我想要得到這樣的輸出:
<div>hello</div>
<div>hi there</div>
我想使用車把#each
和一個不是數組的對象。流星和車把#每次迭代對象
我該怎麼做?我需要它仍然與流星的#each
的特殊功能。
我的目標是在形式:
{
john: "hello",
bob: "hi there"
}
我想要得到這樣的輸出:
<div>hello</div>
<div>hi there</div>
你需要使用一個輔助你的js來幫助理解車把你的對象:
添加到您的客戶端的js
Template.registerHelper('arrayify',function(obj){
var result = [];
for (var key in obj) result.push({name:key,value:obj[key]});
return result;
});
和使用(你也可以使用該密鑰與{{name}}
)在您的HTML:
{{#each arrayify myobject}}
<div title="hover here {{name}}">{{value}}</div>
{{/each}}
myobject
來自您的模板:
Template.templatename.helpers({
myobject : function() {
return { john:"hello", bob: "hi there" }
}
});
您可以將對象轉換成數組下劃線_.map
HTML:
<template name="test">
{{#each person}}
<div>{{greeting}}</div>
{{/each}}
</template>
個JS:
Template.test.helpers({
person : function() {
return _.map(object, function(val,key){return {name: key, greeting: val}});
}
});
應該注意的人現在發現這一點,申報流星把手助手寫這篇文章的正確方法是用UI.registerHelper方法,而不是Handlebars.registerHelper。所以上面的幫手應該看起來像這樣:
UI.registerHelper("arrayify", function(obj){
result = [];
for (var key in obj){
result.push({name:key,value:obj[key]});
}
return result;
});
現在它是'Template.registerHelper()'http://docs.meteor.com/#/full/template_registerhelper – 2015-10-15 20:20:13
你可以發佈你用作對象嗎?如果你想獲得一個迭代過的對象的屬性,這可能是不可能的,但你總是可以使用'{{item.property}}' – Akshat 2013-02-23 00:18:02
@Akshat發佈我的對象。謝謝你的幫助。 – Harry 2013-02-23 00:47:37
**現在有**的內置支持;請參閱http://stackoverflow.com/q/11884960/50079 – Jon 2013-07-07 22:04:38