我在单选按钮列表上绑定了“已检查”和“单击”事件。但是,只要单击单选按钮,选择就不会停留。我一定是做错了。如果你们能指出我正确的方向,真的很感激。
请参阅Fiddle Here
查看型号:
var viewModel = {
wantsSpam: ko.observable(true),
spamFlavor: ko.observable('cherry'),
click: function(model){
console.log(model);
}
};
查看:
<input type="radio" name="flavorGroup" value="cherry"
data-bind="checked: spamFlavor, click:click" />
答案 0 :(得分:37)
默认情况下,Knockout会阻止
click
事件采取任何默认操作 ...
但是,如果您确实希望继续执行默认的click
操作,只需点击处理程序函数中的return true
。
因为您的click
处理程序重置了您的单选按钮并修复它,您最后需要return true
:
click: function(){
alert('Hi');
return true;
}
演示JSFiddle。
答案 1 :(得分:6)
基本上,您的点击处理程序最终不会捕获您想要保留的值。
发生的事情是,在您选择项目后,它将恢复为默认值。
return true;
作为handler
中的唯一代码。
答案 2 :(得分:5)
您只需删除点击事件或使用点击事件中的return true
即可。因为Knockout阻止click事件采取任何默认操作。这意味着,如果您在标签(链接)上使用点击绑定,例如,浏览器将只调用您的处理程序函数,而不会导航到链接的href
var viewModel = {
wantsSpam: ko.observable(true),
spamFlavor: ko.observable('cherry'),
/*click: function(){
alert('Hi');
}*/
};
或者
var viewModel = {
wantsSpam: ko.observable(true),
spamFlavor: ko.observable('cherry'),
click: function(){
alert('Hi');
return true;
}
};