请考虑以下事项:
self.selected = ko.observable();
self.selectionItems = ko.observableArray([{name: "bob"}, {name: "sally"}]);
self.containers = ko.observableArray([{name: "container 1", key:1}, {name: "container 2", key: 2}]);
如果我有以下html:
<div data-bind="foreach: containers">
<div>
<select data-bind="options: $parent.selectionItems, optionsText: 'name', optionsValue: 'name', value: $parent.selected"></select>
</div>
</div>
然后,当其中一个容器选择了一个项目时,所有容器都会更新以反映容器x中您选择了bob名称的事实。
如何进行特定于该容器元素的可观察对象的操作?
基本上,如果我通过self.containers
有20个容器,每个容器应该观察它自己的动作。我会将self.selected
变成observableArray
吗?
答案 0 :(得分:1)
如果将每个选择的value
绑定到同一个observable,它们将具有相同的值。您需要在containers
对象中有一个observable来存储所选的。
self.containers = ko.observableArray([{
name: "container 1",
key: 1,
selected: ko.observable()
}, {
name: "container 2",
key: 2,
selected: ko.observable()
}]);
或者,您可以在父级中拥有一个observableArray选定项,但这需要您将数组的大小调整为与containers
相同的长度,并且您必须使用{{ 1}}得到正确的;它是一个笨重的选择。