Knockout.js 使用KnockoutJS禁用复选框

Knockout.js 使用KnockoutJS禁用复选框,knockout.js,knockout-2.0,knockout-mapping-plugin,knockout-validation,knockout-mvc,Knockout.js,Knockout 2.0,Knockout Mapping Plugin,Knockout Validation,Knockout Mvc,当可观察数组的长度达到特定限制时,我无法禁用该复选框。 以下是代码的链接: 谢谢。因为selectedChoices是可观察的,所以在访问其length属性之前,需要使用parens调用它,如下所示: <input type="checkbox" name="NotifyMembers" data-bind="attr: { value: $data }, checked: $parent.selectedChoices,

当可观察数组的长度达到特定限制时,我无法禁用该复选框。 以下是代码的链接:


谢谢。

因为
selectedChoices
是可观察的,所以在访问其
length
属性之前,需要使用parens调用它,如下所示:

<input type="checkbox" name="NotifyMembers"
       data-bind="attr: { value: $data },
                  checked: $parent.selectedChoices,
                  enable: $parent.selectedChoices().length < 2" />


谢谢伊斯梅尔。只想在现有代码中添加更多内容。我现在可以禁用该复选框。但现在我只想禁用那些未选中的复选框。@Sabby62类似于
enable:$parent.selectedChoices.indexOf($data)!=-1 | |$parent.selectedChoices().length<2
@Sabby62,尽管此时我会将该逻辑提取到视图模型上的一个方法中。
var viewModel = {};

viewModel.choices = ["one", "two", "three", "four", "five"];
viewModel.selectedChoices = ko.observableArray(["two", "four"]);

viewModel.selectedChoicesDelimited = ko.dependentObservable(function () {
    return viewModel.selectedChoices().join(",");
});

ko.applyBindings(viewModel);
<input type="checkbox" name="NotifyMembers"
       data-bind="attr: { value: $data },
                  checked: $parent.selectedChoices,
                  enable: $parent.selectedChoices().length < 2" />