Ember路由器和控制器逻辑

dag*_*da1 7 ember.js ember-old-router

我很想知道关于新的ember路由和控制器的哪一层逻辑是什么:

如果我们以下面的路线为例:

step1: Ember.Route.extend
  route: '/step1'
    connectOutlets: (router, event) ->
      exercise = WZ.Exercise.createRecord()
      router.get('exercisesNewStep1Controller').set 'groups', WZ.store.find(WZ.Group)
      router.get('exercisesNewController').connectOutlet 'step', 'exercisesNewStep1', exercise
Run Code Online (Sandbox Code Playgroud)

我的ExercisesNewStep1Controller目前是无逻辑的:

WZ.ExercisesNewStep1Controller = Em.Controller.extend()
Run Code Online (Sandbox Code Playgroud)

建议的建议似乎是让路径只需要使用控制器中的任何其他逻辑将正确的插座分配给正确的控制器.

我应该重构我的控制器:

WZ.ExercisesNewStep1Controller = Em.Controller.extend
  createGroup: ->
    @set 'groups', WZ.store.find(WZ.Group)
Run Code Online (Sandbox Code Playgroud)

这是一个非常简单的例子,但我认为逻辑成立.

我对所有图层的位置感到困惑.我认为必须创建所有这些xxxController,xxxView文件以及它们之间的耦合,这会产生少量开销.

我喜欢灰烬,但我只是想提出这一点.

Mik*_*ski 5

我与Tilde团队进行了一些交流,Tom Dale教我们按照hvgotcodes提出的方式.

但是在与彼得·瓦格内特讨论之后出现了一个改进:作为对我审讯的回复,彼得和耶胡达减轻了我们对汤姆解释的立场.

所以我总结一下整个画面说:

  • 行为应该在路由的事件处理程序中以高级编码,
  • 但是分解的低级基元可以(/应该)在控制器中本地化.

原因是任何处理都应限定在给定路径中,这样可确保整个应用程序的连贯行为,而不是将所有可能的处理打开到应用程序的任何部分.


sly*_*7_7 2

https://speakerdeck.com/u/tomdale/p/emberjs-more-than-meets-the-eye幻灯片 55。

事实上,我不知道它是否符合当前的良好实践,但模型管理(创建/编辑/删除)似乎没有在任何地方体现。在我看来,它必须响应视图事件并在 connectOutlets 方法中完成。所以你的第一个例子对我来说看起来不错。此外,在这张幻灯片中,控制器应该包含很少的逻辑......但什么是真正的“很少的逻辑”?

你的问题对我来说非常重要,因为我们没有任何其他建议,特别是来自经验丰富的 ember 用户的建议。