Checkbox 未在Knockoutjs中签入复选框

Checkbox 未在Knockoutjs中签入复选框,checkbox,knockout.js,Checkbox,Knockout.js,我正在使用带有数据绑定内函数的复选框,但我无法选中该复选框 查看: <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'

我正在使用带有
数据绑定
内函数的复选框,但我无法
选中该复选框

查看:

<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());

这是我的

默认情况下,
单击
绑定基于JavaScript单击事件处理程序将处理一切的假设,防止对单击的默认反应。您仍然需要返回“true”以获取默认行为,这是从
f()
函数执行的,而不是从
数据绑定中的包装执行的:

<input type="checkbox" data-bind="click: function() { f('hello parameter'); }">

应该是

<input type="checkbox" data-bind="click: function() { return f('hello parameter'); }">

如果代码周围没有上下文,则不清楚您打算如何使用此控件。通过复选框,您通常会使用绑定到布尔可观测值的

选中绑定将可选中表单控件(即复选框()或单选按钮())与视图模型上的属性链接在一起

因此,使用选中的绑定编写此文件的另一种方法是:

示例代码:

<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());
var VM=function(){
var self=这个;
self.myCheck=ko.可观察(假);
self.myCheck.subscribe(函数(){
警报('checked value='+self.myCheck());
});
}
应用绑定(新VM())

点击我

是的,它正在工作。糟糕的是我错过了返程。找到另一种方法
f.bind('hello参数')
。哪个更好?@supercool需要是
f.bind($root,'hello parameter')
,本质上是相同的。这完全取决于您是否需要函数中的
这个
(如果需要,在某些情况下可能需要使用
bind()
,请参见)。仅供参考,您也可以使用
单击:return f(“…”)
@Niko,是的,它确实有效。打开原来的小提琴,用这个代替你的输入:
如果它对你不起作用,请告诉我你正在使用哪个浏览器。是的,尼科。你完全正确,我完全错了。所以我上面的评论是完全错误的。绑定失败,返回“意外的令牌”。