在頁面加載我轉換JSON數據,查看模型這樣Knockout.js更新視圖模型
var jsonField = '#' + '<% = hdnField.ClientID %>';
jsonModel= {
availables: ko.observableArray([])
};
var valueField = $(jsonField)[0].value;
var arrayGroup = $.parseJSON(valueField);
jsonModel.availables = ko.viewmodel.fromModel(arrayGroup);
var block=$('#availabilitiesBlock')[0];
ko.applyBindings(jsonModel,block);
在頁面加載後,我打電話ajax的服務器功能來更新這個視圖模型。
在塔AJAX的成功再打我已經寫了像
var updatedModel = {
availables: ko.observableArray([])
};
updatedModel.availables = ko.viewmodel.fromModel(data.d);
當我嘗試更新與此更新的模型我的整個模型成爲視圖模型空白
我嘗試以下方法
將data.d推入oldModel.availables observable。當我推送數據時,aray對象不會被轉換爲可觀察對象,而是將這些項目添加到availables數組中。而在最初(頁面加載時),對象轉換沒有問題。
試圖直接更新的ViewModels並且在這種情況下,整個模型變爲空白
ko.viewmodel.updateFromModel(oldModel,updatedModel);更新的模型
正如我所說的,當我推陣列對象直接(data.d)的
舊的剪斷模型
剪斷,在ajax之前的第一種情況下,observables不會自動創建。
爲什麼當邏輯相同時會發生這種情況?我正在使用http://coderenaissance.github.io/knockout.viewmodel/自動映射對象。
任何指針將會很有幫助
現貨:)我結束了使用ko.viewModel.updateModel(jsonModel.availables,data.d);但是由於腳本運行時間較長,導致我的用戶界面掛起 –
當您在更改可觀察數組時看到很長的運行時間,請檢查在每個元素上運行的複雜進程(自定義綁定?),還是正在重新計算的敲除計算結果計算每個項目。 –
@RyanRahlf這將工作與地圖插件?我發現我需要調用我的ajax回調函數中的applybindings。否則,該模型不會更新。我認爲地圖插件打破了訂閱的元素,並且無法更新它。 http://stackoverflow.com/questions/21558075/how-do-i-update-my-model-using-ajax-and-mapping-plugin/21568045#21568045 – Vyache