在emblem.js帮助程序调用中提供多个参数

时间:2013-10-17 09:26:49

标签: ember.js handlebars.js emblem.js

让我们说,我想从emblem.js模板中调用Ember Handlebars助手。

我已经通过(CoffeeScript语法)声明了帮助器:

Ember.Handlebars.registerHelper 't', (key, value, context) ->
    ...

尝试使用

从徽章调用帮助程序时
= t "my.i18n.key", "val", count: 42

key被正确分配,除了第一个参数之外的所有参数都被删除,第二个参数被一些选项哈希替换,就像绑定帮助器的情况一样(第三个参数未定义)。

有没有办法在带有多个参数的emblem.js中调用帮助器?

1 个答案:

答案 0 :(得分:3)

我认为你只能传递一个值,但你可以使用带有许多绑定/计算属性的options hash,如下所示:

Ember.Handlebars.registerBoundHelper('truncatedQuery', 
  function truncatedQueryHelper(value, options) {
    console.log('value', value, 'options:', 
      options.hash['key1'], options.hash['key2'], options.hash['key3']);
  // do work...
   return somethingUseful;
});

在您的模板中使用optionsHashKeyBinding=propertyOnControllerName,如下所示:

<div class='truncated-query'>
  {{truncatedQuery 'value' key1Binding=prop1 key2Binding=prop2 key3=42}}
</div>

控制器上prop1prop2的位置:

App.IndexController = Ember.Controller.extend({
  prop1: 'foo',
  prop2: function() {
    return this.get('prop1') + 'bar';
  }.property('prop1'),
});