我有一个控制器,它为模板提供模型的默认生产
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)
答案 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'}}