0
我想要代表多個選擇與從後端JSON選擇的值來淘汰視圖模型。 當每次選擇被更改時都需要檢索這個JSON - 第一次 - 一切正常,但如果我再次應用映射(ko.mapping.fromJS(test_data,ViewModel)),所有訂閱都會丟失嗎?是否有人知道如何避免這個情況?從服務器挖掘映射數據,丟失訂閱
的jsfiddle(我不知道爲什麼選擇沒有它的價值,沒有的jsfiddle - 一切正常): http://jsfiddle.net/0bww2apv/2/
$(ViewModel.attributes()).each(function(index, attribute) {
attribute.attribute_value.subscribe(function(name) {
console.log('SUBSCRIBE', name);
var send_data = {};
$(ViewModel.attributes()).each(function (index, attribute) {
send_data[attribute.attribute_name.peek()] = attribute.attribute_value.peek();
if (attribute.attribute_value() === null) {
send_data = null;
return false;
}
});
if (send_data) {
console.log('REQUEST TO BACKEND: ', ko.toJSON(send_data));
ko.mapping.fromJS(test_data, ViewModel);
// subscriptions is lost here !
}
});
});
試試這個http://jsfiddle.net/supercool/0bww2apv/4/讓我知道只是在情況。乾杯 – 2015-03-25 10:12:55
argh,參數順序,謝謝...訂閱現在保留,但映射不能按預期工作,每個選擇的更新應該重置所有選擇值,換句話說,每個更改都應該將所有選擇重寫爲初始數據,我已經添加幾個console.log,你可以在數據前後看到,還有「attribute_value」被放置到錯誤的觀察對象(但是第一次讀取可以,奇怪)。 http://jsfiddle.net/0bww2apv/7/ – xwild 2015-03-26 03:40:30