ember.js を学び始めたところです なぜこのコードhttp://jsfiddle.net/alexchetv/RVNzP/が正しく動作しないのですか -- App.MyTextField.change() の実行は、MyTextField がフォーカスを失った後にのみトリガーされますか? 同じ機能を持つ代替コードは期待どおりに機能します。
5343 次
2 に答える
8
Ember.View のハンドラー (変更、選択、クリックなど) は、通常の HTML DOM イベントにバインドされていることに注意してください。「onchange」は、値が変更されたときではなく、フィールドがフォーカスを失って変更されたときにのみ入力フィールドで呼び出されます。表示された値の変更について通知を受けたい場合は、「値」を監視する必要があります。
于 2012-05-10T16:51:42.817 に答える
1
これが実用的な解決策です。
私が行ったことは、formDirtyを計算値にし、入力の変更時に再計算します。Emberは、ネイティブの「変更」イベントとは異なり、キーストロークごとに入力の値を更新します(コピー/貼り付けイベントなど)。
Emberのバインディングにより、peopleControllerは常に入力値で更新されるため、計算フィールドformDirtyも更新されます。
さらに入力を追加する場合は、計算されたプロパティにそのイベントをリッスンするように指示する必要があることに注意してください。
formDirty: function() {
return !Ember.empty(this.get('fName')) && !Ember.empty(this.get('lName'));;
}.property('lName', 'fName').cacheable() // <- dependencies
cacheable()はパフォーマンスのためにのみ使用されます。つまり、依存関係が変更されるまで再計算されません。
于 2012-12-13T12:59:49.173 に答える