Ember oneWay Binding无法按预期工作

时间:2016-07-16 23:58:17

标签: ember.js

我有一个控制器,它为模板提供模型的默认生产

activeProduction: Ember.computed('model.productions', function() {
    // as default serve first Production
    return this.get('model.productions').get('firstObject');
}),

在这个生产 -model中,我有一个属性'settings',我想暂时修改它,而不影响商店中的实际值,所以我为这些设置创建了一个计算的oneWay属性:

productionSettingsComputed: Ember.computed.oneWay('activeProduction.settings'),

可以在以下模板中访问和更改这些设置:

saved Settings:<br>
{{activeProduction.settings.startMonday}}<br>
computed oneWay Settings:<br>
{{productionSettingsComputed.startMonday}}<br>

{{form/check-box checked=productionSettingsComputed.startMonday label='Overview and month always start on a Monday'}}

(表单/复选框只是一个自定义组件,包含默认的ember-form-checkbox)

我现在预计,如果我更改复选框中的值,则只会更改第二个值({{productionSettingsComputed.startMonday}})。但{{activeProduction.settings.startMonday}}中的“存储”值也在发生变化 所以'oneWay'不仅仅是一种方式。

我误解了某些事情,还是我在某个地方犯了错误?

是的,我知道,我可以在以后放弃更改,但这会让我头痛于用户权利和其他内容...

(Emberjs 2.5)

1 个答案:

答案 0 :(得分:0)

您取消引用productionSettingsComputed,因此{{activeProduction.settings.startMonday}}{{productionSettingsComputed.startMonday}}评估为startMonday

您需要为startMonday属性添加别名:

// model:
startMondayComputed: Ember.computed.oneWay('activeProduction.settings.startMonday'),

// template:
saved Settings:<br>
{{activeProduction.settings.startMonday}}<br>
computed oneWay Settings:<br>
{{startMondayComputed}}<br>

{{form/check-box checked=startMondayComputed label='Overview and month always start on a Monday'}}