我想弄清楚为什么当复选框改变时文本输入字段不活动?
<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/
我希望有人能帮助我。 (英语不是我的母语,所以如果我的语法有些不好,我很抱歉)
答案 0 :(得分:0)
您是否考虑过将active
属性设为observable
?
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/