ember.js - 如何将任意模板变量传递到 Handlebars 助手中?

标签 ember.js

我正在模板中迭代一个普通数组:

{{#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/

相关文章:

ember.js - EmberJS 计算排序属性与 jQuery UI Sortable 冲突

ember.js - EmberJS notifyPropertyChange 没有使其成为观察者?

ember.js - Ember ViewState 替代方案

ember.js - 如何在 Ember 1.7 中从路由访问查询参数

ember.js - Ember.run.debounce 不反跳

ember.js - Ember CLI 和 Google Analytics

javascript - Ember-charts 导致无法在对象上找到属性 'pie-chart'

javascript - HasMany - BelongsTo 与 RESTAdapter Ember.js

javascript - 如果浏览器不支持 History API,Ember 路由是否会退回到使用哈希?

javascript - ember.js <select> 由两个不同的对象填充和选择