Javascript 在敲除js上执行非真检查绑定?

Javascript 在敲除js上执行非真检查绑定?,javascript,jquery,knockout.js,checked,Javascript,Jquery,Knockout.js,Checked,我在knockout js中有一个输入类型复选框,当选中该复选框时,我不想执行“not true”操作。大概是这样的: <input type="checkbox" data-bind="checked: !IsVisible"/> 但这是行不通的。 我知道我可以调用IsHidden并设置公共检查绑定,但我有一个特殊的情况,我需要这种行为。您可以直接在绑定中评估可观察到的内容,您的想法应该有效 像这样: 然而,请注意,这会失去“可观察性”,这可能不是您想要的 另一种方法是创建

我在knockout js中有一个输入类型复选框,当选中该复选框时,我不想执行“not true”操作。大概是这样的:

<input type="checkbox" data-bind="checked: !IsVisible"/> 

但这是行不通的。
我知道我可以调用IsHidden并设置公共检查绑定,但我有一个特殊的情况,我需要这种行为。

您可以直接在绑定中评估可观察到的内容,您的想法应该有效

像这样:

然而,请注意,这会失去“可观察性”,这可能不是您想要的

另一种方法是创建一个由IsVisible计算的
IsHidden
属性

var ViewModel = function (model) {
    var self = this;
    self.IsVisible = ko.observable(model.IsVisible);
    self.IsHidden = ko.computed({
        read: function () {
            return !self.IsVisible();
        },
        write: function (newValue) {
            self.IsVisible(!newValue);
        }
    });
}

这是因为有!你正在对可观察的物体执行一个函数。使用以下命令:

<input type="checkbox" data-bind="checked: !IsVisible()"/> 

定义自定义绑定。请参阅“”部分,该部分与您要求的内容非常非常相似。基本上,类似的方法应该可以工作(注意:未测试):

然后你可以做:

data-bind="notChecked: IsVisible"

确切地说,我不想失去可观察性啊,只要阅读前面的答案就可以了。为了进行一个有趣的练习,我发布了一个问答问题,演示了一个通用的“not”绑定,它允许您像这样编写html:
()
data-bind="notChecked: IsVisible"