ember.js - Ember 路由器和 Controller 逻辑

标签 ember.js ember-old-router

我很想知道新的 ember 路由和 Controller 的逻辑位于哪一层:

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

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

我的ExercisesNewStep1Controller当前没有逻辑:

WZ.ExercisesNewStep1Controller = Em.Controller.extend()

推荐的建议似乎是让路由只负责将正确的导出分配给正确的 Controller 以及 Controller 中的任何其他逻辑。

我应该将我的 Controller 重构为这样的东西:

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

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

我有点困惑所有图层的位置。我认为创建所有这些 xxxController、xxxView 文件以及它们之间的耦合会产生少量开销。

我喜欢 ember,但我只是想提出这一点。

最佳答案

我和Tilde团队进行了一些交流,Tom Dale教我们遵循hvgotcodes提出的方法。 .

但是在与 Peter Wagenet 讨论后进行了改进:作为对我的 interrogation 的回复,彼得和耶胡达mitigated我们根据汤姆的解释所持的立场。

所以我总结一下整个情况:

  • 行为应该在路由的事件处理程序中进行高层编码,
  • 但是因式分解的低级原语可能(/应该?)本地化在 Controller 中。

原因是任何处理都应该限制在给定的路由范围内,这确保整个应用程序的行为一致,而不是向应用程序的任何部分开放所有可能的处理。

关于ember.js - Ember 路由器和 Controller 逻辑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11666526/

相关文章:

heroku - 使用环境=生产部署到heroku的Ember-CLI应用程序丢失全局应用程序命名空间

javascript - Ember 组件 sendAction() 不工作

javascript - 如何在 ember.js 中执行单元测试?

javascript - Ember-Data 并将数据拉入存储

javascript - Ember.js 中的路由

google-maps - Ember 中 Google map 上的模块化标记

ember.js - App.get ('router' ).send 导致此错误 Uncaught TypeError : Cannot redefine property: __ember1346884664897

ruby-on-rails - 使用 Rails 的 EmberJS 路由

javascript - Ember.js 路由器应用架构——如何拥有多个嵌套 View / Controller 对

ember.js - emberjs - 如何使用路由器基础设施标记事件菜单项