0

我有一个observableArray

self.items= ko.observableArray([]);

包含以下项目

self.item = function () {
        this.number
    };

我有另一个对象

self.people = ko.observableArray([]);

这是observableArray一个personobj 的一个实例items observableArray

我可以添加这些罚款,并且一切正常。

当我尝试itemitems数组中编辑 a时出现问题person

这就是项目的显示方式。

<!-- ko foreach:  items-->
    <input class="number" data-bind="value: number" />
<!-- /ko -->

有没有办法将更改绑定到特定项目?

4

1 回答 1

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([]);
};

并且您的根视图模型具有问题中提到的observableArrayof 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>

请参阅此小提琴以进行演示。

于 2013-08-03T19:34:17.443 回答