2012-02-14 85 views
0

我喜歡knockoutjs,越早越好,直接去掉DOM代碼。我無法理解我將如何做某件事,我將根據問題/答案網站進行解釋。 (這可能是一個通用的MVC/MVVM問題)多個模型

在我的數據模型中,我有一個問題[id,description]和answer [id,question_id,text]。瀏覽器請求一個綁定到tbody的問題列表,一列將顯示問題描述,而另一列應綁定到答案文本框。

這樣做的一個顯而易見的方式是擁有QuestionAnswer [question_id,answer_id,question_descrition,answer_text]模型。理想情況下,我想保持他們分開,以儘量減少轉換髮送/接收/存儲時,如果沒有某種方式保持他們分開,那麼我有以下問題:

哪裏是創建QuestionAnswer的理想場所模型?我敢打賭,按照慣例它在服務器上創建。

如果有這樣一個例子,請將它指向我,否則我認爲它會是一個很好的例子。

請幫我把這個包裹起來,謝謝!

回答

0

好吧, 我已經收集了我的想法,我的問題實際上是問。 要在客戶端進行數據綁定,您顯然也需要您的數據模型。我在什麼時候需要發送以及什麼時候發送了衝突。

要繼續問答網站的想法:發送一個答案列表,其中每個答案都有一個問題是應該做的。這樣,您可以綁定到答案列表,並將每個答案的問題描述簡單地綁定到第一個表格列。

如果以後我想創建一個問題編輯器,我可能會發送一個完全不同的數據結構,而不是重用以前使用過的Answer結構。

我認爲可能有一種方法發送引用自身的更復雜的數據結構。在JSon中顯然有一些額外的庫可能。

1

您可以做的是在服務器上創建組合模型,將其序列化爲json,然後使用映射插件將序列化列表添加到視圖模型。

我這樣做here只有它不是一個組合模型,但不應該有任何區別。特別是因爲你的關係似乎是一對一的。

如果您需要在您的視圖模型中創建一個「對象」,那麼可以使用映射定義來實現,就像我做here一樣。

我使用C#在服務器上構建我的model,但我想你可以使用任何你喜歡的東西。

映射插件很酷的事情是,它將數據添加到視圖模型,以便您可以專注於行爲。

+0

謝謝,我也使用MVC3。你舉例說明了我的想法。 – Reyn 2012-02-16 14:12:19