Int*_*tss 1 handlebars.js ember.js
我有一个Ember.js ArrayController和一些看起来像这样的把手代码
<p>{{length}} {{pluralize length "thing"}}</p>
Run Code Online (Sandbox Code Playgroud)
然后我有一个看起来像的车把帮手
Handlebars.registerHelper('pluralize', function(count, str){
debugger;
return (count > 1 ? str+"s" : str);
}
);
Run Code Online (Sandbox Code Playgroud)
当调试器中断时,我发现看到的count = 'length'不是我期望的数字.
什么给出了什么?什么是完成我明显任务的正确方法.
在这里工作小提琴.http://jsfiddle.net/MwTuw/2/
诀窍是使用Ember.registerBoundHelper将所有相关数据作为函数的最终参数传递.
Ember.Handlebars.registerBoundHelper('pluralize', function (count) {
var options = Array.prototype.pop.call(arguments);
var string = options.data.properties[1];
return (count > 1 ? string+"s" : string);
});
Run Code Online (Sandbox Code Playgroud)
这消除了{{if controller.length}}其他解决方案所需的hack,并且意味着添加或删除其他对象将相应地更新该值.
| 归档时间: |
|
| 查看次数: |
3730 次 |
| 最近记录: |