我已将我的meteor应用程序升级到0.8.0,现在把手自定义帮助程序已停止工作,帮助程序允许我在最后一项附加到列表时改变行为,是否有人知道我是怎么做的可以让车把助手再次工作,或者我如何使用最新版本的meteor来使用此功能,谢谢!
帮助代码(Original Link)
Handlebars.registerHelper("foreach", function(arr, options){
if(options.inverse && !arr.length)
return options.inverse(this);
return arr.map(function(item, index){
item.$index = index;
item.$first = index === 0;
item.$last = index === arr.length - 1;
return options.fn(item);
}).join('');
});
答案 0 :(得分:2)
Meteor已将Handlebars名称空间迁移到UI
UI.registerHelper("foreach", function(arr, options){
return arr.map(function(item, index){
item.$index = index;
item.$first = index === 0;
item.$last = index === arr.length - 1;
return options.fn(item);
}).join('');
});
答案 1 :(得分:0)
我几乎已经编写了自己的帮助函数,它可能不是最适合我的解决方案(现在!)
eachLastItem = function (arr){
if(arr.length > 0){
if(typeof arr[0] == "object"){
var cnt = lastItem = 0;
_.each(arr, function(obj){
(cnt != arr.length - 1) ? lastItem = 0 : lastItem = 1;
_.extend(arr[cnt], {__lastItem: lastItem});
cnt++; });
}else{
var cnt = lastItem = 0;
var newArr = [];
_.each(arr, function(str){
(cnt != arr.length - 1) ? lastItem = 0 : lastItem = 1;
var newObj = {
str: str,
__lastItem: lastItem }
newArr.push(newObj);
cnt++;
});
arr = newArr;
}
return arr;
}else{
return null;
}
}
在模板中,我使用了这个:
{{#each array}}
<li>{{str}}</li>
{{#if __lastItem}}
{{! }}
{{else}}
{{/if}}
{{/each}}