【发布时间】:2013-12-20 16:23:53
【问题描述】:
淘汰网站有一个使用 foreach 绑定添加和删除列表项的绝佳示例,但是您将如何更新这些值?我在下面的小提琴中尝试过这样做,但是 DOM 元素没有响应我的更新:http://jsfiddle.net/SC5Lw/1/
<ul data-bind="foreach: people">
<li>
Name at position <span data-bind="text: $index"> </span>:
<span data-bind="text: name"> </span>
<a href="#" data-bind="click: $parent.removePerson">Remove</a>
<a href="#" data-bind="click: $parent.updatePerson">Update</a>
</li>
</ul>
var person1 = ko.observable({ name: 'Bert' });
var person2 = ko.observable({ name: 'Charles' });
var person3 = ko.observable({ name: 'Denise' });
self.people = ko.observableArray([person1, person2, person3]);
...
self.updatePerson = function(person) {
for(var i = 0 ; i < self.people.length ; i++)
{
if(self.people[i].name === person.name)
{
self.people[i].name = 'Bob';
}
}
};
我已经将 observableArray 的元素本身变成了 observables,所以我不确定为什么它们绑定的元素不会对视图模型中的属性更改做出反应。
【问题讨论】:
-
显示您的 HTML 与您的绑定
标签: knockout.js