2013-10-26 66 views
1

我正在嘗試使用Ember.js,但在使用操作時卡住了。Ember.js map action keyUp event

如果我使用以下命令:

<button {{action "test"}}>Test</button> 

,並創建一個控制器:

App.NewController = Ember.ArrayController.extend({ 
    actions: { 
     test: function() { 
      console.log("test"); 
     }, 
    } 
}); 

然後一切工作正常,我可以在我的日誌中看到test。但是,當我嘗試以下方法:

<input type="text" {{action "test2" on="keyUp"}} /> 

,並以類似的方式定義test2行動:

App.NewController = Ember.ArrayController.extend({ 
    actions: { 
     test: function() { 
      console.log("test"); 
     }, 
     test2: function() { 
      console.log("test2"); 
     } 
    } 
}); 

然後,它似乎並沒有工作。我的測試按鈕正在工作,但按照我的預期,在讀取the documentation後,按鍵事件處理程序未被觸發。

回答

3

這真的很奇怪,我會繼續研究它,但你可以使用輸入助手並觀察值,另外如果你關心他們按下的是哪個鍵,那麼你可以擴展文本字段並獲得關鍵字。

http://emberjs.jsbin.com/EBoLEZe/1/edit

{{input value=name}}

postKey: function(){ 
    console.log(this.get('name')); 
    }.observes('name') 

參見:KeyPress event not working as expected in Ember

+0

謝謝,我用第一種方法(與'postKey')。稍後我會嘗試其他方法(來自鏈接的答案)。這種解決方案是否可取或者它沒有關係? – g00glen00b

+0

這取決於你需要什麼。如果你關心的只是場地變化的時候,而不是當有人按下移位,或按Ctrl或隨機的那樣,我認爲這個解決方案更簡單。如果你想真正知道什麼時候鍵(如輸入鍵),那麼另一種解決方案更好。 – Kingpin2k

+0

@ Kingpin2k:有什麼辦法可以引入延遲。目前按用戶按鍵,我們稱之爲功能。現在我想確保當用戶暫停或完成打字時,只有我應該調用該功能,而不是調用每個按鍵上的功能。 – SharpCoder

0

它看起來像有是影響使用與鍵盤事件行動的能力的錯誤(或者至少是非常奇怪的行爲)。通常情況下,非鍵盤事件的操作處理程序(如默認的「單擊」事件)在按下修飾鍵時不起作用。在你的代碼中,如果你添加allowedKeys="any"到你的動作助手,那麼你的處理程序將被調用。

小提琴:http://emberjs.jsbin.com/oyEpImI/2/edit?html,js,output

+3

我的這個修復只是合併到Ember中https://github.com/emberjs/ember.js/commit/567aafa8f0de6b29d90d8638f2166b8df6275f9c –

相關問題