为了使绑定起作用,Ember 需要知道绑定值何时更改,以便同步它。为了让 Ember 知道某个值已更改,您需要使用Ember.set
. 例子:
object.set('value', 'I changed');
// This says: Ember, my value has changed, please sync!
因此,当某个属性在没有使用的情况下发生更改时Ember.set
,Ember 不知道它应该同步它。因此,我们需要监听这个事件变化,并告诉 Ember 它使用Ember.set
.
这就是输入值发生的情况。当您键入时,值会更改,但Ember.set
不会被调用。那么,当这些事件之一被触发时Ember.TextField
,监听keyup
和change
其他事件和调用是做什么的。Ember.set
当然,您不必使用它们,但是您必须手动监听这些更改并告诉 Ember 值已更改this.set('value', this.$().val())
:)
我不明白为什么您在使用时遇到问题,Ember.TextField
因为它几乎可以做任何事情,而且它所做的一切都为您省去了自己收听事件的麻烦。
可能对您有所帮助的一件事是您可以直接在模板中使用它,而不是创建视图来扩展它:
{{view Em.TextField placeholder="Twitter username" valueBinding="username" type="search"}}
这几乎与输入相同的数量:
<input type="search" placeholder="Twitter username" value="some value" />
注意:从您上面提供的示例中,看起来您正在遵循旧教程,请注意,从那时起很多都发生了变化。