我想将把手#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}});
}
});
现在发现这一点的人应该注意,在撰写本文时,在 Meteor 中声明 Handlebars 助手的正确方法是使用 UI.registerHelper 方法,而不是使用 Handlebars.registerHelper。所以上面的助手现在应该是这样的:
UI.registerHelper("arrayify", function(obj){
result = [];
for (var key in obj){
result.push({name:key,value:obj[key]});
}
return result;
});