2012-06-19 2 views
1

간단한 jsfiddle이 있는데 각 foreach 바인딩의 값을 변경하려고합니다. 행의 값을 변경하려고하면 바인딩은 내가 원하지 않는 다른 모든 행을 업데이트합니다. 이 바인딩에 무슨 문제가 있습니까?Knockout.js 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()); 

UPDATE :

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

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

http://jsfiddle.net/gY26k/ 

답변

2

문제는 당신이 놓치고있는 것입니다 : 나는 카트 모델에 self.lines.push 이동

+0

이 맞습니다. 바보 나. – ashraf

0

장바구니 모델입니다 var에서 self = this. var self = this이어야합니다. 귀하의 예에서 self은 전역 변수이며 각 개체는 동일한 self 값을 공유합니다.

+0

작동하지 않습니다. 선을 옮겼습니다. 카트를 여전히 카트 모델로 밀어 넣지 않았습니다. 내 편집을 참조하십시오. – ashraf

관련 문제