我在data-bind
内使用了一个带有功能的复选框,但我无法check
复选框。
查看:
<input type="checkbox" data-bind="click: function(){ f('hello parameter'); }">Click me
查看型号:
var VM = function () {
this.f = function (param) {
alert(param); // here i am getting 'hello parameter'
return true;
}
}
ko.applyBindings(new VM());
这是我的Fiddle
答案 0 :(得分:13)
默认情况下,click
绑定会根据您的JavaScript单击事件处理程序将处理所有内容的假设阻止对单击的默认反应。你需要回归&#34; true&#34;无论如何,要从f()
函数中获取默认行为,而不是data-bind
内的包装器:
<input type="checkbox" data-bind="click: function() { f('hello parameter'); }">
应该是
<input type="checkbox" data-bind="click: function() { return f('hello parameter'); }">
答案 1 :(得分:5)
没有代码的上下文,你不清楚你打算如何使用这个控件。使用复选框,您通常会使用绑定到布尔值observable的 checked binding :
选中的绑定将可检查的表单控件(即复选框()或单选按钮())与视图模型上的属性链接起来。
使用选中绑定编写此代码的另一种方法是:
示例代码:
var VM = function () {
var self = this;
self.myCheck = ko.observable(false);
self.myCheck.subscribe(function () {
alert('checked value = ' + self.myCheck());
});
}
ko.applyBindings(new VM());
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.2.0/knockout-min.js"></script>
<div>
<input type="checkbox" data-bind="checked: myCheck" />
Click me
</div>
通过这个例子,有一个跟踪复选框值self.myCheck
的observable。因此,选中/取消选中复选框时,self.myCheck()
将设置为true / false。
为了在值改变时提供一些输出或运行一些代码,我已经订阅了observable,这基本上意味着每次更改observable的值时,都会触发警报(或任何代码)你放在那里。)