Knockout js可观察数组和复选框,检查绑定失败

时间:2013-11-22 04:19:20

标签: javascript checkbox knockout.js

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

<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/

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

2 个答案:

答案 0 :(得分:0)

您是否考虑过将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());

答案 1 :(得分:0)

这是因为您未在ko.observable

中使用ko.observableArray

请参阅observableArrays上的knockout documentation

  

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

     

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

因此,使其可观察并解决问题 小提琴:http://jsfiddle.net/2FAJN/4/

相关问题