ember新路由器

时间:2013-01-23 16:46:33

标签: ember.js ember-router

我对Ember路由和控制器有疑问。我刚刚编写了一个小应用程序来熟悉新的路由器。因此,我已经构建了一个按钮,通过单击它可以转换到另一个状态。

App.PostsView = Em.View.extend({
  click: function() {
    var router;
    this.get('controller').transitionTo('about');
  }
});

我现在的问题是: get方法会返回什么?。显然是PostController的一个实例,但一方面控制器没有transitionTo()方法,另一方面没有任何意义。

2 个答案:

答案 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,它基本上委托给它的目标(即路由器)