我正在学习一些教程并尝试学习knockout.js
。
我无法调用自定义绑定。
我的自定义绑定JS代码:
/// <reference path="knockout-3.3.0.debug.js" />
/// <reference path="jquery-1.10.2.min.js" />
/// <reference path="jquery-ui-1.11.4.min.js" />
ko.bindingHandlers.executeOnEnter = {
init: function (element, valueAccessor, allBindingsAccessor, viewModel) {
var allBindings = allBindingsAccessor();
$(element).keypress(function (data, event) {
var keyCode = (event.which ? event.which : event.keyCode);
if (keyCode === 13) {
allBindings.executeOnEnter.call(viewModel);
return false;
}
return true;
});
}
};
我使用以下代码绑定它:
<input type="text" data-bind="executeOnEnter: addData" />
然而,没有任何反应。即使在自定义绑定函数上设置了alert
,也没有任何事情发生,这绝对意味着,它不会被调用。
答案 0 :(得分:0)
这是一个有效的版本,
ko.bindingHandlers.executeOnEnter = {
init: function (element, valueAccessor, allBindingsAccessor, viewModel) {
var allBindings = allBindingsAccessor();
$(element).keypress(function (event) {
if (event.keyCode === 13) {
allBindings.executeOnEnter.call(viewModel);
return false;
}
return true;
});
}
};
我删除了以下行以使其适合您。
var keyCode = (event.which ? event.which : event.keyCode);
然后将keyCode
替换为event.keyCode
由于
self.CallAlert = function () {
alert('Alert called!');
};
<input type="text" data-bind="executeOnEnter: CallAlert" class="form-control"/>