2013-07-07 27 views
5

我有一個簡單的knockoutjs ViewModel。但在我將該模型的綁定應用到我的視圖之前,我需要首先初始化它,或者使用通過AJAX從服務器獲取的一些數據(JSON格式)設置數組值。在應用綁定最佳實踐之前初始化使用json數據的Knockout ViewModel

我知道我可以創建我的模型的對象,使ajax請求,然後初始化我的模型數組。像這樣:

function AppViewModel() { 
    var self = this; 
    self.Servers = ko.observableArray([]);//this one 'll be filled by data from server 
} 
var MyViewModel = new AppViewModel(); 
MyViewModel.Servers = ko.mapping.fromJSON(json_data);//make ajax call to get json_data. 
ko.applyBindings(MyViewModel); 

這是一個好的做法還是有更好的做法。

回答

1

看起來像一個很好的方式來做到這一點,至少在你提供的上下文中。 mapping plugin's documentation有關於AJAX請求的部分,最後還有一個「高級」部分,可幫助您跟蹤服務器對象的密鑰,以便更新服務器的更新更容易。

另一個好的來源是loading & saving tutorial。它不使用映射插件,顯示了通過AJAX請求處理CRUD操作的更基本的事情。

0

Knockout Mapping插件似乎在出路。原始作者是/ looking for maintainers,此時似乎一致意見是讓用戶遷移到較新的Knockout ViewModel plugin

我不知道這是否是最佳做法,但我會與我如何執行JSON到ViewModel步驟一致。我的虛擬機相當複雜,所以我把它們保存在一個不同的js文件中,並將數據傳遞給構造函數。這使得我在頁面的腳本是這樣的:

var MyViewModel = new AppViewModel(json_data); 
ko.applyBindings(MyViewModel); 

具有單線使它稍微在單元測試方便(少了一個東西約忘了)。

+0

對不起,但我沒有明白你的意思。你能解釋一下嗎?還是以完整的例子來幫助我 –

相關問題