上使用keyUp行動剛剛開始與Ember,我想執行一些動作,當用戶鍵入的東西在一個文本字段。我第一次嘗試這個如何調用灰燼中的文本字段
<input type="text" {{bind-attr value=qty}} {{action "checkQty" on="keyUp"}}/>
那正確初始化文本字段的值,並呼籲在我的控制器的actions
哈希函數checkQty()
,但我不是爲qty
得到更新值。所以看起來bind-attr
是單向交易。
我嘗試使用TextField
觀點:
{{view Ember.TextField value=qty onEvent="keyPress" action="checkQty"}}
我不得不使用keyPress
而不是keyUp
因爲onEvent only allows enter or keyPress。這工作,除了在keyPress
閱讀數量的價值給我的用戶按下鍵之前的字段的值,而不是之後。
所以我結束了使用輸入助手指定字段:
{{input type="text" value=qty}}
在我的控制器中創建一個觀察者:
checkQty: function() {
Ember.Logger.log('qty: ', this.get('qty'));
}.observes('qty').on('change')
這樣的作品,但現在我感到困惑的最好構建我的Ember應用程序的實踐。它似乎似乎像規定的方法是爲您的模板有效地調用您的控制器上的操作。我對觀察者的使用感覺像是一種駭人聽聞的方式,以避免我在模板中無法正常工作。
看着灰燼源代碼後,我才得以延長TextField
得到我想要的行爲:
MyApp.TextField = Ember.TextField.extend({
keyUp: function(event) {
this.sendAction('action', this.value);
}
});
然後我的模板變成了:
{{view MyApp.TextField value=qty onEvent="keyUp" action="checkQty"}}
有沒有更好的辦法在Ember中完成這項工作?