2012-07-04 61 views
0

在過去的幾天裏,我對Knockoutjs越來越感興趣。它看起來非常有希望,因爲它模擬了MVVM模式和WPF類似的綁定,但是當它爲非RIA Web應用程序帶來有用的東西時,我確實有些懷疑(當我說RIA時,我的意思是在瀏覽器應用程序中很複雜,比將幾行添加到表格並隱藏一個更復雜一點)KnockoutJS複製數據開銷

假設您有一個包含10個項目的組合框,並且您需要能夠在客戶端創建另外2個項目並將它們保存在服務器。

我看到它的方式,你將不得不與Obs創建一個視圖模型。數組預先填充了10個項目,並且還呈現組合框內的10個項目(作爲10個選項元素)。

基本上你會有2個循環兩次項目集合,並呈現js viewmodel和組合框(選項)中的項目。

現在想象一下,您將有30個控件不會擁有基於knockout視圖模型和帶有預填充數據的html控件的信息是開銷?

+0

如果我的回答是有用的,請接受它....任何其他挖空問題,我很樂意提供幫助。 –

回答

2

每種情況都不同,但我不認爲您通常需要呈現這些組合框選項以及在Knockout視圖模型中定義它們 - Knockout將爲您構建選項HTML。 我在複雜的對象圖中以這種方式填充了許多組合框。當頁面首次加載對象圖形的初始狀態時,將在頁面中呈現爲對象字面值,然後傳入我的頂層Knockout視圖模型構造函數,該構造函數通過映射插件創建整個結構(創建子視圖模型等)。 然後,所有保存和更新都通過小型分立Ajax操作完成,並使用映射插件重新映射。

+0

Knockout站點(這是我遇到的最好,最好記錄和提供的庫站點之一 - 爲什麼它們都不是這樣?)有各種HTML控制綁定的不錯演示:http:// knockoutjs .com/examples/controlTypes.html –

+0

在我的上下文中,Knockout的客戶端HTML生成通過允許我在多個視圖模型中重複使用相同的元數據而大大減少了我的開銷 - 例如,我將參考查找數據作爲JSON一次拉入單獨的文件,該文件被緩存,Knockout將它用作可能有10個選擇的選項。然後,每個視圖模型只存儲其選定的項目ID。如果與每個選擇預填充相同的項目的頁面會變得很快。 –

+0

我看到只填充視圖模型的一個問題是,只有在頁面完全加載後,組合框纔會得到它的選項,我可能想盡快選擇瀏覽器呈現選擇控件的東西。 – Zapacila