天天看點

Knockout應用開發指南 第六章:加載或儲存JSON資料

加載或儲存資料

Knockout不限制你用任何技術加載和儲存資料。你可以使用任何技術和伺服器來互動。用的最多的是使用jQuery的Ajax幫助,例如:getJSON,post和ajax。你可以通過這些方法從伺服器端擷取資料:

… 或者向伺服器端發送資料:

或者,如果你不想用jQuery,你可以用任何其它的方式來讀取或儲存JSON資料。是以, Knockout需要你做的僅僅是:

    對于儲存,讓你的view model資料轉換成簡單的JSON格式,以友善使用上面的技術來儲存資料。

    對于加載,更新你接收到的資料到你的view model上。

轉化View Model資料到JSON格式

為了使view model資料序列化友善(包括序列化observables等格式),Knockout提供了2個幫助函數:

    ko.toJS — 克隆你的view model對象,并且替換所有的observable 對象為目前的值,這樣你可以得到一個幹淨的和Knockout無關的資料copy。

聲明一個view model:

該view model包含observable類型的值,依賴類型的值dependent observable以及依賴數組observable array,和普通對象。你可以像如下代碼一樣使用ko.toJSON将此轉化成伺服器端使用的JSON 字元串:

或者,序列化之前,你想得到JavaScript簡單對象的話,直接使用像這樣一樣使用ko.toJS:

使用JSON更新View Model資料

如果你從伺服器端擷取資料并且更新到view model上,最簡單的方式是自己實作。例如,

很多情況下,最直接的方法就是最簡單而且最靈活的方式。當然,如果你更新了view model的屬性,Knockout會自動幫你更新相關的UI元素的。

不過,很多開發人員還是喜歡使用一種好用而不是每次都寫代碼的方式來轉化資料到view model上,尤其是view model有很多屬性或者嵌套的資料結構的時候,這很有用,因為可以節約很多代碼量。knockout.mapping插件可以幫你做到這一點。

繼續閱讀