嵌套路由中的Ember控制器
Ember controllers in nested routes
我对ember控制器的工作方式感到非常困惑。
我现在从ember和ember-cli开始,我想了解更多关于控制器如何工作的信息。
如果我在事件资源中有一个名为new的嵌套路由,我应该有:
models/event
routes/events/new
templates/events/new
控制器呢??我只使用一个简单的控制器,还是应该使用控制器/事件/新控制器?
没有任何生成器命令可以为我创建所有资源吗?我需要一个接一个地打电话吗?
谢谢。
控制器呢??我只使用一个简单的控制器,还是应该使用控制器/事件/新控制器?
这主要取决于你的控制器需要做什么。如果这只是控制器无论如何都要做的重要事情,Ember会在引擎盖下为你创建控制器,并自动将动作冒泡到它的父控制器。
没有比Ember指南更好的地方来阅读控制器的用途:
最简单的定义是:
控制器允许您用显示逻辑来装饰模型。
这意味着您基本上将它们用作路线和模板之间的主要通信层。从本质上讲,你的模型来自你的路线,通过你的控制器,进入你的模板。模板中发生的操作先到达控制器,然后到达路由。因此,控制器本质上是中间层,您可以在其中使用您的模型(和其他数据)来控制向用户显示的内容,控件用户可以做什么,控件他们可以在哪里导航等。
但是,要注意未来的计划:
控制器非常像组件,以至于在Ember的未来版本中,控制器将完全被组件取代。目前,组件无法路由到,但当这种情况发生变化时,建议用组件替换所有控制器。
这意味着,现在,控制器的责任仅限于两件事:
- 基于当前路由维护应用程序状态
- 从组件移动到路线时,处理或冒泡通过控制器层的用户操作
模板上触发的所有操作首先在控制器上查找,如果在控制器中未处理或冒泡(通过返回true),则在路由上查找。
因此,/events
或events/new
路由的控制器根本没有必要,只有当您想立即(在较小的范围内)处理这些路由上发生的事情,而不是允许所有事情都冒泡到ApplicationController时。
没有任何生成器命令可以为我创建所有资源吗?我需要一个接一个地打电话吗?
是的。因为,如果你没有专门创建一个控制器,Ember只会在幕后为你生成一个。你需要指定你想自己处理事情的地方。
你应该访问我上面给出的链接(或者再次出现在这里)到Ember指南,那里有更多更详细的例子。
- 从全局函数调用Ember控制器上的方法
- Ember.js:将Em.$.getJSON转换为promise并将响应绑定到控制器上下文的正确方法
- 如何将Ember.js控制器连接到视图
- Ember:当子控制器同时观察到父控制器触发请求的相同属性时
- Ember访问公共路由/控制器mxiin中的控制器属性
- 如果没有Ember中的控制器,我如何更改查询参数
- Ember.js-自动使动作成为目标控制器
- Ember.js:如果控制器中满足某些条件,则在路由器中重定向
- 更改路由时将 Ember 控制器属性设置为 false
- ember - 控制器操作仅由输入字段调用,而不由按钮调用
- 在 ember 控制器中创建自定义函数
- Ember控制器计算的属性(Object类型)更新不起作用
- 嵌套路由中的Ember控制器
- 在Ember控制器中使用依赖注入字段
- 链接Ember控制器到视图/元素
- 如何在Ember控制器中测试. observers()方法
- 如何在目录中设置ember控制器
- 在测试期间,Ember UI不会触发Ember控制器动作
- Ember控制器依赖解析不能在直接链接上工作
- 渲染到现有模板时的Ember控制器