【问题标题】:Ember controllers in nested routes嵌套路由中的 Ember 控制器
【发布时间】:2015-11-24 01:24:54
【问题描述】:

我对 ember 控制器的工作原理感到非常困惑。

我现在开始使用 ember 和 ember-cli,我想更多地了解控制器的工作原理。

如果我在事件资源中有一个名为 new 的嵌套路由,我应该有:

models/event
routes/events/new
templates/events/new

控制器呢?我只使用一个简单的控制器,或者我也应该使用控制器/事件/新的?

没有任何生成器命令可以为我创建所有资源?我需要一一打电话吗?

谢谢。

【问题讨论】:

  • 您使用的是哪个版本的 ember?
  • @nem 我正在使用 1.13.7

标签: javascript ember.js


【解决方案1】:

控制器呢?我只使用一个简单的控制器,或者我也应该使用控制器/事件/新的?

这主要取决于您的控制器需要做什么。如果它只是控制器所做的基本工作,Ember 会在后台为您创建该控制器,并自动将操作冒泡到其父控制器。

没有比Ember guides 更好的阅读控制器用途的地方了:

最简单的定义是:

控制器允许您使用显示逻辑来装饰您的模型。

这意味着您基本上将它们用作路由和模板之间的主要通信层。本质上,您的模型来自您的路线,通过您的控制器并进入您的模板。模板中发生的动作会到达控制器,然后到达路由。因此,控制器本质上是中间层,您可以在其中使用模型(和其他数据)控制向用户显示的内容,控制用户可以做什么,控制他们可以在哪里导航等。


但是,请注意未来的计划:

控制器与组件非常相似,以至于在未来的 Ember 版本中,控制器将完全被组件取代。目前无法路由组件,但当这种情况发生变化时,建议将所有控制器替换为组件。

这意味着,目前,控制器的责任仅限于两件事:

  1. 根据当前路由维护应用程序状态
  2. 在从组件移动到路由时处理或冒泡通过控制器层的用户操作。

在模板上触发的所有动作首先在控制器上查找,如果在控制器中未处理或冒泡(通过返回 true),则在路由上查找它们。

因此,您的 /eventsevents/new 路由的控制器根本不是必需的,只有当您想立即处理这些路由上发生的事情(在较小的范围内)而不是让所有事情都冒泡时应用程序控制器。


没有任何生成器命令可以为我创建所有资源?我需要一一打电话吗?

是的。因为,如果您不专门创建控制器,Ember 只会在幕后为您生成一个。您需要自己指定要在哪里处理事情。

您应该访问我在上面提供的链接(或 here it is again)到 Ember 指南,其中包含更多更详细的示例。

【讨论】:

  • 哇!很好的答案@nem,我将阅读所有指南,我认为可以帮助我更好地理解 ember 的工作原理。感谢您的回答和提示!
  • @FátimaAlves 没问题,很乐意提供帮助。 Ember 很棒,继续学习 :)
猜你喜欢
  • 1970-01-01
  • 2019-12-12
  • 2013-01-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-10
  • 2015-10-05
相关资源
最近更新 更多