去掉js可观察数组和复选框,选中绑定失败

Knockout js observable arrays and checkbox, checked bind fail

本文关键字:绑定 失败 复选框 js 观察 数组 去掉      更新时间:2023-09-26

我想弄清楚为什么当复选框更改时文本输入字段不活动?

<form data-bind="foreach: editables">
    <input type="checkbox" name="edit" data-bind=" checked: active" />
    <input type="text" name="edit" data-bind="value: name, disable: !active" />
    <br/>
</form>
var viewModel = function () {
   this.editables = ko.observableArray(
[{
    active: true,
    name: "mi"
}, {
    active: false,
    name: "yo"
}, {
    active: true,
    name: "cel"
}]);
};
ko.applyBindings(new viewModel());

http://jsfiddle.net/legolito/2FAJN/2/

我希望有人能帮助我。(英语不是我的母语,所以如果我的语法有问题,我很抱歉)

您是否考虑过将active属性设置为observable

http://jsfiddle.net/tzG3t/

var viewModel = function () {
    this.editables = ko.observableArray(
    [{
        active: ko.observable(true),
        name: "mi"
    }, {
        active: ko.observable(false),
        name: "yo"
    }, {
        active: ko.observable(true),
        name: "cel"
    }]);
};
ko.applyBindings(new viewModel());

因为您没有在ko.observableArray 中使用ko.observable

请参阅observableArrays 的淘汰文档

关键点:observableArray跟踪阵列中的对象,而不是这些对象的状态

简单地将一个对象放入observableArray中并不能使该对象的属性本身是可观察的。当然,你可以如果你愿意,让这些属性变得可观察,但这是一个独立选择。observableArray只跟踪它的对象保持,并在添加或删除对象时通知侦听器。

因此,让它变得可观察并解决问题
Fiddle:http://jsfiddle.net/2FAJN/4/