バインディングが機能するためには、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
呼び出されませんでした。したがって、これらのイベントの1つが発生したときに、これらのイベントと呼び出しをEmber.TextField
リッスンします。keyup
change
Ember.set
もちろん、それらを使用する必要はありませんが、これらの変更を手動でリッスンし、値が変更されたことを Ember に伝える必要があります: this.set('value', this.$().val())
)
Ember.TextField
ほとんど何でもできるので、使用に問題がある理由がわかりません。イベントを自分で聞く手間が省けます。
役立つかもしれないことの 1 つは、ビューを作成して拡張する代わりに、テンプレートで直接使用できることです。
{{view Em.TextField placeholder="Twitter username" valueBinding="username" type="search"}}
これは、次のタイプとほぼ同じ量です。
<input type="search" placeholder="Twitter username" value="some value" />
注: 上記の例から、古いチュートリアルに従っているように見えます。注意してください。それ以降、多くの変更が加えられています。