ember js动作if语句传递参数

时间:2014-09-04 09:16:59

标签: javascript ember.js ember-data

我只需要将参数传递给特定路线的余烬动作。

{{#if isSelected 'filters' filter.id}}class="active"{{/if}}

我在app.js文件中的动作路线定义如下所示

App.FooRoute = Ember.Route.extend({
  model: (...),
  actions : {
    (...),
    'isSelected' : function(table,obj) {
      return this.store.find(table,obj).get('selected');
    }
  }
});

但我得到了Uncaught Error: Assertion Failed: You must pass exactly one argument to the if helper

我不想为此编写帮助程序,因为代码组织得更好......

怎么做?

2 个答案:

答案 0 :(得分:1)

答案是:我做不到。将一个参数传递给控制台显示的if语句

Uncaught Error: Assertion Failed: You must pass exactly one argument to the if helper 

这将是一个很好的功能,想到

修改 我用这行代码安排了我的需求。

Ember.ObjectController.extend({
  actions : { 
    selectItem : function(table,item){

      this.store.find(table,item.id).then(function(obj){
        obj.set('selected',!obj.get('selected'));
      console.log(obj.get('selected'));
        obj.save();
      });
    },
    selectAll : function(table){
      this.store.find(table).then(function(obj){
        obj.forEach(function(obj){
          obj.set('selected',true);
          obj.save();
        });
      });
    }
}
});

和我的车把(它的一部分)

{{#each obj in model.objs}}
  <dd {{bind-attr class="obj.selected:active"}}><a {{action "selectItem" 'filter' obj}}>{{obj.name}}</a></dd>
{{/each}}

答案 1 :(得分:0)

尝试使用对象:

{{#if isSelected {table: 'filters', id: filter.id} }}class="active"{{/if}}