2013-01-31 46 views
0

我無法找到以下答案...請給我一個建議。
我有一個基於元數據通過ajax請求從服務器獲得的dinamically構建的窗體。它顯示數據約20個值,用戶輸入約10個字段。因此,表示視圖模型和後視圖模型是不同的。填充字段也通過ajax回傳。
我如何正確應用Knockout視圖模型概念?
1.我製作了一個用於顯示和發佈數據的視圖模型。在這種情況下,AJAX調用會將大量冗餘數據回傳給服務器。選項:我可以發送一個只包含輸入字段的新對象,但它在KO概念中看起來不錯。
2.我製作一個視圖模型,僅包含用於用戶輸入的字段。只讀字段顯示不在KO視圖模型中,並使用通用jQuery方法填充(所以我們再次沒有純KO樣式)
3.或者?
我很欣賞你的想法。敲除viewmodel概念

回答

2

Knockout提供了將MVVM模式應用於客戶端(HTML5/Javascript)應用程序的功能。您的JavaScript視圖模型應提供操作其所負責的視圖或視圖所需的所有數據和屬性,包括用戶輸入字段和僅顯示字段。

一旦您將某些內容發佈回服務器,您將離開MVVM世界併到達另一個層來執行某些操作。因此,我認爲最好是制定只包含服務器完成請求所需數據的JSON。在服務器端,你可能有一個帶有驗證屬性的C#模型或者其他的東西,但是,你並不想在那裏遵守MVVM模式。

希望這會有所幫助。如果需要,我很樂意詳細說明。

+0

哇,真好,乾淨。謝謝!那麼,你如何創建JSON對象發佈到setrver?手動映射? – LINQ2Vodka

+0

我通常創建或獲取具有我需要的數據的JS對象,然後使用JSON.stringify或類似的方法創建JSON。根據您需要發送的數據,您可能已經擁有它或至少部分包含在JS視圖模型的複雜屬性中。 –