0
foreach 항목 observables가 업데이트되도록 observableyarray를 올바르게 만들지 못했습니다. 또한 나는 위와 관련된 클릭 바인딩에 대해 업데이트 된 모델 (observablearay)을 가져올 수 없습니다.knockout foreach doesnt 업데이트 관찰 가능
<div>
<!-- THIS NEVER UPDATES IF YOU CHANGE TEXTAREA-->
<pre data-bind="text: ko.toJSON($data, null, 2)"></pre>
<div data-bind="foreach: Items">
<div data-bind="text: TestProperty"></div>
<textarea data-bind="text: DataInput"></textarea>
<!-- THIS NEVER UPDATES IF YOU CHANGE TEXTAREA-->
<span data-bind="text: DataInput"></span>
</div>
<button data-bind="click: test">Save</button>
</div>
JS
var RiskItemModel = function (item) {
var self = this;
self.DataInput = ko.observable(item.DataInput);
self.TestProperty = ko.observable("test");
};
var PortfolioRiskModel = function (data) {
var self = this;
self.Items = ko.observableArray();
// fill with initial data
if (data) {
$.each(data.Items, function (index, item) {
self.Items.push(ko.observable(new RiskItemModel(item)));
//self.Items.push(new RiskItemModel(item));
});
};
self.test = function() {
// I AM ALWATYS GETTING OLD VALUES HERE!
alert(ko.unwrap(ko.unwrap(self.Items)[0]).DataInput());
};
};
var data = {
"$id": "1",
"Items": [{
"DataInput": "first"
}
/*, {
"DataInput": "second"
}*/
]
};
var ChartSelectedRiskType = new PortfolioRiskModel(data);
ko.applyBindings(ChartSelectedRiskType);
현재 jsfiddle으로 재생할 수 있습니다 : 당신은 텍스트 영역에 잘못된 attributte에 데이터를 바인딩 한 http://jsfiddle.net/L3tJL/