2012-02-14 95 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