1

各 foreach バインディングの値を変更しようとしている単純なjsfiddleがあります。行の値を変更しようとすると、バインドによって、不要な他のすべての行が更新されます。このバインディングの何が問題なのですか?

<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 に答える