布尔属性的`Ember.Select`返回空对象`{}`

时间:2014-07-09 02:44:28

标签: ember.js

我正在尝试在模型上的布尔属性上使用Ember.Select。问题是它将我的属性转换为对象{}并且没有发生绑定。

我的模型有一个isActive标志

isActive: DS.attr('boolean'),

这是我的模板中的余烬选择

            {{view Ember.Select
                viewName="isActive"
                content=controller.yesNo
                optionLabelPath="content.key"
                optionValuePath="content.value"
                selection=model.isActive
                class="form-control"
                disabled=true}}

在我的路由器中,我在控制器上设置了yesNo数组(顺便说一下,我不确定这是否是正确的地方,这个很简单,但我的一些选择需要使用{{1来查询数据库所以我认为这些路线不是控制器。)

this.store.find('accounts')

我也尝试将布尔值作为字符串传递,但它不起作用。

setupController: function(controller, model) {
    this._super(controller, model);

    controller.set('yesNo', [
        {key : 'Yes', value : true},
        {key : 'No', value : false}
    ]);
}

更新

从ember检查器中,当我选择一个项目时,它将返回整个对象 controller.set('yesNo', [ {key : 'Yes', value : 'true'}, {key : 'No', value : 'false'} ]); { key: Yes, value: true }。我不想只返回value属性。

1 个答案:

答案 0 :(得分:4)

selection绑定整个对象。 value会将optionValuePath中指定的属性绑定到您指定的属性。因此,如果您只想将binded属性设置为布尔值,请使用value而不是selection。因此,在模板中选择的把手中使用:

{{view Em.Select
  // Properties...
  // More properties...
  value=isActive
}}

旁注:

您不需要在controller中指定content=controller.yesNo。你可以说content=yesNo