我正在我的模板中迭代一个普通数组:
{{#each chapter in chapterList}}
<li>{{ chapter }} {{ test chapter }}</li>
{{/each}}
chatperList
这里是,比如说,[1,2,3,4,5]
。我做了一个车把助手:
Ember.Handlebars.registerHelper('test', function(chapter) {
return this.get('list.selectedChapter') == chapter
? 'selected'
: '';
});
但是helper函数中的章节
变量只是字符串“章节”。我如何访问实际变量本身?
这看起来像Ember中的bug(仍然在最新的v1.0中)…你不能将变量传递给#each中的助手,否则你会得到:-
TypeError: Object.defineProperty called on non-object
我刚刚找到了一个使用options.data内容的解决方法,但这意味着如果你传递的对象在#each中,你需要引用它(注意“颜色”而不是下面的颜色)
模板:
<ul>
<li>{{helpme color 'lorry'}}</li>
{{#each color in model}}
<li>{{helpme 'color' 'lorry'}}</li>
{{/each}}
</ul>
帮手:
Ember.Handlebars.helper('helpme', function (color, vehicle, opts) {
var str = color;
if (typeof opts.data.keywords[color] === 'string') {
str = opts.data.keywords[color];
}
return new Ember.Handlebars.SafeString(str + '_' + vehicle);
});
…看到我的JSFiddle
编辑:旧版本的Ember使用Ember. Handlebar.checksterHelper()
而不是Ember.Handlebar.helper()
如果你想要一个绑定的助手,你需要使用Ember. Handlebar.regsterBoundHelper
,它的别名是Ember.Handlebar.helper
。
Ember.Handlebars.helper('test', function(chapter) {
return this.get('list.selectedChapter') == chapter ? 'selected' : '';
});