我有observableArray
self.items= ko.observableArray([]);
包含以下内容的项目
self.item = function () {
this.number
};
我有另一个对象人
self.people = ko.observableArray([]);
是observableArray
obj的person
,其items
observableArray
我可以添加到这些,并且一切正常。
当我尝试在item
内的items
数组中编辑person
时出现问题。
这是项目的显示方式。
<!-- ko foreach: items-->
<input class="number" data-bind="value: number" />
<!-- /ko -->
有没有办法将更改绑定到特定项目?
答案 0 :(得分:1)
如果正确嵌套视图模型,Knockout会将输入正确绑定到特定项目,而无需您做额外的工作。你还没有100%清楚你的视图模型是什么样的,但这里的设置应该有用。
假设您的两个视图模型如下所示:
var Item = function(name, nr) {
this.name = ko.observable(name);
this.number = ko.observable(nr);
};
var Person = function(name) {
this.name = ko.observable(name);
this.items = ko.observableArray([]);
};
,您的根视图模型的observableArray
people
如问题中所述,如下所示:
var vm = { people: ko.observableArray([]) }
有了这个,您可以将new Person
个对象添加到people
数组中,并为这些人提供Item
个数组中的items
个对象。
以下视图会为每个项目生成input
个字段,其中的更改“与特定项目相关联”:
<div data-bind='foreach: people'>
<h3 data-bind="text: name"></h3>
<!-- ko foreach: items-->
<span data-bind="text: name"></span>:
<input class="number" data-bind="value: number" />
<!-- /ko -->
</div>
请参阅this fiddle了解演示。