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

时间:2015-12-02 19:03:55

标签: javascript ember.js

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

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提供输入后,Ember检查器中groups的值变为字符串,不再是计算属性。我如何在Ember 2.1中避免这种情况并让它只更新计算属性?

1 个答案:

答案 0 :(得分:1)

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

我一直在使用dockyard's one-way-input插件,它默认为输入组件提供单向绑定。

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

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

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

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