我已經在這裏發佈我的代碼:http://jsfiddle.net/HYDU6/6/ 這是一個相當精簡的版本,我實際上在處理什麼,但捕獲了我的問題的本質。我的看法模式是像這樣:淘汰賽映射插件[創建,更新]:創建的對象,無法更新
var viewModel = {
objects: {
foo: [
{ text: "Foo's initial" },
],
bar: [
{ text: "Bar's initial" },
]
}
}
我使用ko.mapping插件和我create
處理程序objects
實例從objects.foo
Obj
然後objects.bar
,返回數組中得到的兩個項目。這部分工作正常;我用
var view = {};
ko.mapping.fromJS(viewModel, mapping, view);
我的問題是基於新數據進行更新。 (即從服務器獲取數據)。我有新的數據的對象,我嘗試
ko.mapping.fromJS(new_model, mapping, view);
我懷疑這是不正確,但我一直沒能得到廣泛的,儘管它的搜索工作。 (相信我,這是幾天。):無論如何,謝謝你的幫助。
編輯:所以我主要想通了 - 我太依賴於mapping.fromJS和某些東西沒有被包裹到觀察對象中。我也意識到我不需要create(),只需要update(),因爲它在create()之後被調用。如果您有類似問題,請告訴我!
嗨,約翰,在你的小提琴中有不少不尋常的事情發生。首先,當鏈接到ko.mapping插件時,不要使用github的原始版本,因爲一些嚴格MIME打字的瀏覽器不允許腳本執行。請嘗試使用此版本://cdnjs.cloudflare.com/ajax/libs/knockout.mapping/2.3.5/knockout.mapping.js –
哦,謝謝,這是我的第一個。我會更新它。 –
接下來,我剛開始用你的術語感到困惑。你所稱的「綁定」更恰當地稱爲「視圖模型」。 「綁定」是將視圖模型連接到UI的東西,反之亦然。我會建議對您的帖子進行一些修改以澄清問題。 –