使用Ember.js,处理请求的逻辑应该放在哪里,然后添加一个新的子div?

时间:2012-11-27 04:45:48

标签: javascript model-view-controller user-interface web-applications ember.js

假设用户可能从集合{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,并且每个div都存在一个模型,视图和控制器。

随时告诉我你在这个过程中看到的逻辑部分以及你将它放在哪里。但请回答:

  1. 验证过程应位于控制器层中,还是位于模型层中的某个位置
  2. 一旦验证,一个中介对象应该调用模型并查看添加新子节点,或者模型是否应该添加子节点,然后以某种方式触发视图执行相同操作。
  3. 控制器应该知道dom和模型的层级关系
  4. 我在Ember.js中实现了类似的东西,它对事物有一些想法,但即使你不使用它/从未听说过它也请回答。

1 个答案:

答案 0 :(得分:3)

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

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

控制器不应该知道DOM。

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