我对Ember路由和控制器有疑问。我刚刚编写了一个小应用程序来熟悉新的路由器。因此,我已经构建了一个按钮,通过单击它可以转换到另一个状态。
App.PostsView = Em.View.extend({
click: function() {
var router;
this.get('controller').transitionTo('about');
}
});
我现在的问题是: get
方法会返回什么?。显然是PostController
的一个实例,但一方面控制器没有transitionTo()
方法,另一方面没有任何意义。
答案 0 :(得分:3)
this.get('foo')
返回Ember对象的属性。由于视图可以有一个"控制器" property,this.get('controller')
返回绑定到视图控制器属性的控制器(默认情况下为postsController)。
this.get('controller').transitionTo()
有效,因为正如sly7_7所述,transitionTo()
也在控制器上定义并委托给路由器。请注意,它可能会被弃用,应该使用
this.get('controller').transitionToRoute('about');
代替。
答案 1 :(得分:1)
控制器有一个transitionTo:https://github.com/emberjs/ember.js/blob/master/packages/ember-routing/lib/ext/controller.js#L36,它基本上委托给它的目标(即路由器)