2
我正在尋找一種方法將許多不同的鍵綁定到我的viewmodel中的不同動作/函數。將任意鍵(通過鍵碼)綁定到使用敲除的動作
我找到了這個example,其中綁定處理程序用於將操作綁定到輸入密鑰。
但是,我該如何修改這個處理程序以支持所提供的鍵碼?我希望能夠對各種按鍵使用相同的處理程序,並且最好還可以與修改鍵結合使用。
ko.bindingHandlers.executeOnEnter = {
init: function (element, valueAccessor, allBindingsAccessor, viewModel) {
var allBindings = allBindingsAccessor();
$(element).keypress(function (event) {
var keyCode = (event.which ? event.which : event.keyCode);
if (keyCode === 13) {
allBindings.executeOnEnter.call(viewModel);
return false;
}
return true;
});
}
};
非常好,但不適用於淘汰賽3.x Uncaught TypeError:無法讀取屬性'$ data'undefined – David
這裏是Knockout 3的更新版本:http://jsfiddle.net/SuaNe/8/ – Tyrsius
如果輸入綁定到observable的值,則必須添加'valueUpdate:'afterkeydown''綁定。沒有這種綁定,如果用戶鍵入文本然後點擊輸入,則在'actionKey'綁定之前不會引發onblur事件,導致observable返回意外的值,而不是當前文本。 –