MVC - 如果没有内容,谁决定该怎么办?

时间:2014-08-06 12:30:34

标签: model-view-controller architecture

当加载一个列出例如来自数据库的事件的页面,但是现在没有事件发生时,应该由谁来显示消息"抱歉现在没有事件发生..."

  1. 模型是否应检查包含事件的数组是否为空,并将包含此消息的视图作为静态内容调用
  2. 或者视图是否应检查包含内容的数组是否为空,如果是,则显示一条消息通知用户?
  3. 或者这个意见是否基于个人偏好?
  4. 如果是基于个人喜好,这两种方法有哪些优点和缺点?
  5. 编辑: 同样的问题可以应用于:我们正在尝试加载一个事件,但事件已经结束,所以它会说“对不起,这个事件已经结束了”#34;。再说一次:模特的选择还是视图的选择呢?

2 个答案:

答案 0 :(得分:2)

何时显示哪种消息显然是视图的选择。该模型对用户阅读消息只知道任何事情,但只知道其内在状态。

实际问题是,视图如何知道何时应该显示哪条消息。我想到的主要有两种方式:

  • 视图轮询模型的状态每分钟/秒/毫秒/ when-user-clicks-button / whatever并在需要时更新消息 或
  • 当模型状态发生变化并且视图侦听这些事件时,模型本身会发出事件。 但是,发出一个说“我的状态已经改变”的事件的模型与决定向用户显示消息完全不同,两者都应该严格分开。

答案 1 :(得分:2)

当所述视图从模型层请求活动事件列表并且什么都不返回时,视图是三元组的一部分,它将识别没有内容。

如果您在PHP的上下文中查看此内容,那么您的视图将无法观察模型层,并且必须启动数据请求。

此外,如果您实际上完全没有发回任何内容,那么相同的视图也应该设置response code to 204