【发布时间】:2018-01-04 19:34:56
【问题描述】:
Knockout 将使用 jQuery(如果存在)来处理 UI 事件。要禁用此行为并指示 Knockout 始终使用本机事件处理,您可以在调用
ko.applyBindings之前在代码中设置以下选项
ko.options.useOnlyNativeEvents = true;
但设置上述属性并不会阻止使用 jquery 附加的事件。
HTML
<input id="test" type="text" data-bind="value:defaultVm.Temp,event:{change:defaultVm.ChangeEvt}"/>
<label data-bind="text:defaultVm.Temp" style="color:#ffff"/>
JS
defaultVm = function() {
var temp = ko.observable("tests");
var changeEvt = function(){
alert("I was called");
}
return {
Temp: temp,
ChangeEvt : changeEvt
}
}();
ko.options.useOnlyNativeEvents = true; // Doesnt change any behaviour
ko.applyBindings(defaultVm);
$('#test').on('change',function()
{
alert("I was called");
});
我的Fiddle 有什么问题,为什么设置属性ko.options.useOnlyNativeEvents = true; 不会改变默认行为?
【问题讨论】:
-
如果
useOnlyNativeEvents = false,knout 内部使用 jquery 进行事件处理。如果你将它设置为 true,它可能会走纯 JavaScript 路线。它不会阻止您在viewModel之外附加事件。你可以通过这个github issue
标签: jquery knockout.js