我在 knockout js中有一个输入类型复选框,我想在选中此复选框时执行“not true”操作。像这样:

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

但这是行不通的。
我知道我可以打电话给IsHidden并设置常用的检查绑定(bind),但是在女巫中我有一种特殊情况,我需要这种行为。

最佳答案

您可以直接在绑定(bind)中评估可观察对象,并且您的想法应该可行。

像这样:<input type="checkbox" data-bind="checked: !IsVisible()"/>
注意,但是,这失去了“可观察性”,这可能不是您想要的。

另一种方法是创建一个从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);
        }
    });
}

See the Fiddle

10-05 20:53