1

我有一个简单的jsfiddle,我正在尝试更改每个 foreach 绑定的值。如果我尝试更改一行的值,则绑定会更新我不想要的所有其他行。这个绑定有什么问题?

<div data-bind="foreach:lines">
<div>
    <input data-bind="value: qty, valueUpdate: 'keyup'" />
    <label data-bind="text: qty"></label>
</div>

var Product = function (qty) {
 self = this;
 self.qty = ko.observable(qty);
};
var Cart = function () {
 self = this;
 self.lines = ko.observableArray([]);
 self.lines.push(new Product(1));
 self.lines.push(new Product(2));
};
ko.applyBindings(new Cart());

更新:我将 self.lines.push 移入购物车模型

4

2 回答 2

2

问题是您缺少var. self = this它需要是var self = this。在您的示例中,self是一个全局变量,每个对象共享相同的self值。

于 2012-06-20T00:40:24.007 回答
0

购物车是您的模型:

var c  = new Cart();
ko.applyBindings(c);

c.lines.push(new Product(1))
c.lines.push(new Product(2));​

http://jsfiddle.net/gY26k/
于 2012-06-19T23:56:53.533 回答