这是关于Ember基本原理的问题。
让我们从官方Ember入门指南的Transitioning to Show Only Incomplete Todos步骤考虑以下代码。
Todos.TodosActiveRoute = 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});
}
});
this.render
将传递的对象controller
定义为其控制器。这是有道理的,但是......为什么?
如果我们只使用模板名称参数调用this.render
,那么应用程序(似乎)可以工作:
renderTemplate: function(controller) {
this.render('todos/index');
}
renderTemplate文档声明它默认使用路由控制器,并且其controller
参数也设置为路由的控制器。教程中的模式似乎明确声明了默认行为。这是怎么回事?
答案 0 :(得分:1)
有三种可能的原因,
Trek于2013年3月16日做了https://github.com/emberjs/website/commit/0f2af23799ee2ba3c643303fb96e8b72026f8e7f#diff-750a8e7208fb50dc62974ff56234d69e
看起来这个功能是由nragaz于2013年1月10日添加的 https://github.com/emberjs/ember.js/commit/dbe5b4fbcb26fc030cd4fb9fa5ae586217f20a4e
所以看起来我错了#1,而且可能是#2。