渲染到现有模板时的Ember控制器
Ember Controller when rendering into existing template
我正在学习Ember教程,它运行得很好,但我不太清楚其中的一个方面。
仅显示已完成的Todos
Todos.Router.map(function () {
this.resource('todos', { path: '/' }, function () { // Index route
// additional child routes
this.route('active'); // Implicit this.route("active", { path: "/active" });
this.route('completed'); // Implicit this.route("completed", { path: "/completed" });
});
});
...
Todos.TodosCompletedRoute = Ember.Route.extend({
model: function() {
return this.store.filter('todo', function(todo) {
return todo.get('isCompleted');
});
},
renderTemplate: function(controller) {
this.render('todos/index', {controller: controller});
}
});
对我来说,我们重用现有的模板并简单地更改分配的模型是有意义的,在这种情况下,将其限制在已完成的todo列表中。
我不明白的是要呈现的{controller: controller}
参数。
根据Chrome中的Ember检查器,无论有没有{controller: controller}
自变量,控制器都是TodosCompletedController
。
如果存在{controller: controller}
参数,则转到应用程序路由(在我的情况下为file:///Users/dpwrussell/Checkout/web/ember/TodoMVC/index.html#/
,然后单击Completed会导致正确的响应,只显示已完成的todos。
如果没有{controller: controller}
参数,单击Completed链接将显示待办事项的完整列表,而不仅仅是已完成的待办事项。
最后,如果直接转到url file:///Users/dpwrussell/Checkout/web/ember/TodoMVC/index.html#/completed
,则无论{controller: controller}
是否丢失,都会显示仅完成todo的正确列表,但如果转到All,然后使用链接再次完成,则它将再次停止工作。
jsbin显示问题
jsbin显示如果您直接转到已完成的url ,它是如何工作的
感谢
您可以查看Route的render和renderTemplate方法以获得更好的理解。如果控制器没有在this.render('todos/index', {controller: controller})
中指定,那么Ember将创建并使用TodosCompletedController,因为路由是TodosCompletedRoute。参数"controller"不是TodosController,而是生成的TodosCompletedController。即使在调用render
时没有传递控制器,一切都应该正常工作。这是JSBIN。
- 从全局函数调用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控制器