1

假设用户可能会从集合 { A, B, C } 中选择一个 div 并将其添加到 div X 中,但每个 div 具有不同的规则,可能取决于应用程序状态和每个 div 的某些内在属性。最后在添加 div 时,每个 div 可能会触发不同的事件。

例如,在一种应用程序状态下,用户:

尝试将 A 添加到 X:将 A 添加到 X,没有其他反应

尝试将 B 添加到 X:将 B 添加到 X,触发了一些附加事件

尝试将C添加到X:不允许,C返回到某个定义的原始状态(例如,如果我尝试通过拖放将C添加到X,C返回到原始位置)。

假设所有三个 div 都已渲染,并且每个都存在一个模型、视图和控制器。

随意告诉我你在这个过程中看到的逻辑片段以及你会把它放在哪里。但请回答:

  1. 验证过程应该位于控制器层还是模型层的某个位置
  2. 一旦经过验证,一个中介对象是否应该调用模型和视图来添加新的孩子,或者模型应该添加孩子,然后以某种方式触发视图做同样的事情。
  3. 控制器是否应该意识到 dom 和模型的层次关系

我正在 Ember.js 中实现这样的东西,它对事物有一定的想法,但即使你不使用它/从未听说过它,也请回答。

4

1 回答 1

3

拖放操作应在视图中实现。当项目被丢弃时,它应该触发一个发送到路由器的操作。路由器(充当应用程序的状态机)应根据当前状态适当地响应操作。决定适当的动作可以完全基于状态,或者考虑模型或控制器的各个方面。

动作应该操纵模型和/或控制器,并且视图层中的绑定/观察者应该使视图与模型/控制器的新状态同步。

控制器不应该知道 DOM。

希望有帮助!我在此处提供的演示文稿中介绍了职责划分:http ://www.lukemelia.com/blog/archives/2012/08/23/architecting-ember-js-apps/

于 2012-11-27T06:02:13.777 回答