2015-08-29 69 views
2

我现在正在学习MVC,刚刚通过控制器修改模型时,它可以通知视图更新模型中的数据。虽然我很困惑。由于模型是由控制器而不是自己或其他东西修改的,它应该是控制器将更新通知发送到视图。此外,我还没有找到任何这种模型到视图通信的例子,请给我一个清楚,如果有人理解这个想法很好。MVC中的模型到视图通信?

回答

0

查看通信的模型通常通过Observer模式完成。视图中的代码往往会比模型中的代码更改,因此模型 - 视图分离意味着模型元素不直接依赖视图元素。您可以添加或更改视图代码,并且模型代码不受影响。

状态改变的模型元素只是通知其所有观察者。由于控制器或其他原因(值随时间变化)可能会发生状态更改。

具体见https://msdn.microsoft.com/en-us/library/ff649643.aspx如下:

0

MVC的核心组件model捕获应用程序在问题域方面的行为,而与用户界面无关。 model直接管理应用程序的数据,逻辑和规则。 A view可以是信息的任何输出表示,例如图表或图表。 第三部分controller接受输入并将其转换为modelview的命令。

通常,controller接收用户输入,如按键和鼠标点击,并基于此修改model。当model更改view需要更新以反映更改。

有几个选项如何实施view更新。

A)view更新可以通过在修改model后直接从controller调用它来实现。有关示例,请参见here

B)view更新可以使用Observer模式实现。在这种情况下,每当model发生相关更改时,model就会在view上触发更新事件。有关示例,请参阅here

+0

我们为什么需要第二个方法是什么?我认为这是控制器改变模型,它可以通过方式通知视图。 –

+0

我删除了第二个选项以保持简单。感谢评论@ Ivan814 – iluwatar

+0

我认为你没有明白我的观点,第二种选择是我在这个问题上关注的。 –