我有一个简单的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移动到购物车模型
答案 0 :(得分:2)
问题在于您var
遗失了self = this
。它必须是var self = this
。在您的示例中,self
是一个全局变量,每个对象共享相同的self
值。
答案 1 :(得分:0)
购物车是您的模特:
var c = new Cart();
ko.applyBindings(c);
c.lines.push(new Product(1))
c.lines.push(new Product(2));
http://jsfiddle.net/gY26k/