【发布时间】:2014-04-11 17:59:52
【问题描述】:
我正在学习 Ember 教程,它运行良好,但我无法完全弄清楚其中的一个方面。
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});
}
});
对我来说,我们正在重用现有模板并简单地更改分配的模型,在这种情况下,将其限制为已完成的待办事项列表。
我不明白的是要渲染的{controller: controller} 参数。
根据 Chrome 中的 Ember 检查器,无论有无 {controller: controller} 参数,控制器都是 TodosCompletedController。
如果存在 {controller: controller} 参数,则转到应用程序路由(在我的情况下为 file:///Users/dpwrussell/Checkout/web/ember/TodoMVC/index.html#/,然后单击 Completed 会导致正确的响应,仅显示已完成的待办事项。
如果没有 {controller: controller} 参数,单击“已完成”链接会显示待办事项的完整列表,而不仅仅是已完成的。
最后,如果直接访问 url file:///Users/dpwrussell/Checkout/web/ember/TodoMVC/index.html#/completed,那么无论 {controller: controller} 是否丢失,都会显示正确的仅已完成待办事项列表,但如果您转到“全部”,则使用链接再次完成,它将再次停止工作。
jsbin showing how it works if you go directly to completed url
谢谢
【问题讨论】:
标签: javascript ember.js