2015-04-06 53 views
1

按照Knockout docs for the "event" binding返回true不允許在淘汰賽「事件」默認動作結合

默認情況下,淘汰賽將阻止事件採取任何默認操作。

....

但是,如果你做讓默認操作出發,只是從你的事件處理函數返回true。

這似乎不適合我。這是我的觀點:

<input data-bind="event: { 'keydown': function(d, e) { onInputKeydown(e); } }" /> 

,並在我的視圖模型的事件處理程序:

onInputKeydown = function(e) { 
    console.log(e.which); 
    return true; 
} 

這個處理程序阻止任何字符被輸入到<input>元素。我究竟做錯了什麼?

回答

1

您ViewModel中的函數確實返回true,但您在視圖中指定的包裝並不傳播該函數的返回值。試試這個(注:將return):

<input data-bind="event: { 'keydown': function(d, e) { return onInputKeydown(e); } }" /> 
0

是的,這是事實,你需要從你的函數返回true。我還發現,如果我在我的函數中出現斷點,那麼keydown事件似乎忽略了我已經返回true。禁用所有斷點,它工作正常。