我正在模板中迭代一个普通数组:
{{#each chapter in chapterList}}
<li>{{ chapter }} {{ test chapter }}</li>
{{/each}}
chatperList
这里是,[1, 2, 3, 4, 5]
。我制作了一个 Handlebars 助手:
Ember.Handlebars.registerHelper('test', function(chapter) {
return this.get('list.selectedChapter') == chapter
? 'selected'
: '';
});
但是辅助函数中的chapter
变量只是字符串“chapter”。如何访问实际变量本身?
最佳答案
这看起来像是 Ember 中的一个错误(仍在最新的 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.Handlebars.registerHelper()
而不是
Ember.Handlebars.helper()
关于ember.js - 如何将任意模板变量传递到 Handlebars 助手中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17904494/