Ember 2.1输入字段覆盖计算属性

Ember 2.1 Input Field Overwriting Computed Property

本文关键字:段覆盖 计算 属性 字段 输入 Ember      更新时间:2023-09-26

我有一个计算属性,它侦听模型,看起来像:

groups: function() {
    let g = this.get('model.items.groups').map(function(obj) { return obj.group; });
    return g.join(',');
  }.property('model.items.groups'),

在我的模板中,我有以下输入字段:

{{input value=groups type="text" class="form-control" placeholder="Testme"}}

我注意到,在通过UI提供输入后,groups的Ember检查器中的值变成了字符串,而不再是计算属性。如何在Ember 2.1中避免这种情况,并让它只更新计算的属性?

这是因为默认情况下{{input}}助手使用双向绑定。在输入字段中写入时,它将写入value属性。

我一直在使用dockyard的单向输入插件,默认情况下,它提供了一个具有单向绑定的输入组件。

{{one-way-input
  value=groups
  update=(action 'updateSomething')
}}

然后在任何你使用组件的地方:

actions : {
  updateSomething(value) {
    //Do Something with the value and update model.items.groups?
  }
}

这样,值总是从groups计算的属性中读取,并且操作更新值的源(而不是计算的属性)