2012-10-14 25 views
7

我在想如何以正確的方式構建KnockoutJS應用程序。如何正確構造KnockoutJS應用程序

  • 官方文檔幾乎總是隻使用單個ViewModel

經過只有幾個實現的功能,我的代碼變得非常混亂,來自面向對象的背景,我對這樣的架構非常過敏。所以必須有更好的解決方案。

對JavaScript不太熟練我在搜索Stackoverflow並找到those three options。所以,我想前兩個選項,我不是很滿意:

  • 多的ViewModelshere

我覺得很難決定什麼DOM元素得到什麼​​ViewModel。還有幾個函數從DOM元素外調用。也許我使用這種架構的ViewModel太少了,但ViewModels之間的通信似乎是不同的,我不希望這是必要的。那麼如何正確地做到這一點?

  • 具有子視圖以及利用所述與(從those three第二個選項)結合

這是我對建築的首選類型,因爲你可以有廣泛的文檔綁定了一個視圖模型,但你也可以組織你的代碼轉換成子塊並將其綁定到任何你想要通過使用具有約束力。該選項雖然需要對象字面值而不是函數,但這些值不如answer中所述。

我還沒有嘗試方法三,因爲它似乎有點矯枉過正,也使用對象文字。

那麼有沒有一種方法來構建我的代碼,並且也可以完全控制而不使用對象文字?

我希望這不是太混亂:-P

回答

3

對於任何您所提到的,你不需要使用對象文字的選項。樣本只是用它們來簡化代碼。您可以選擇以您認爲合適的任何方式創建單個視圖模型。

例如在#3中,可以使用如下構造函數:http://jsfiddle.net/rniemeyer/PctJz/149/。當然,實際的數據會傳遞給函數而不是靜態的。與#2一樣,您只需將它包裝在「視圖」對象中即可。

+0

+1用於顯示對象文字和功能的方式與相同的例子,使它更容易看到他們是如何不同[並意識到他們不太不同:) :) – jamiebarrow

+0

很好的例子,謝謝!我需要更新小提琴看它運行 - 也許淘汰賽已過時? http://jsfiddle.net/memeLab/cy7u9/1/ – ptim

+0

超級有用,謝謝..我如何設置加載默認視圖? http://stackoverflow.com/questions/23946248/ko-js-howto-set-default-view-when-using-view-constructor – ptim

相關問題