访问新Ember路由器的实例

时间:2013-01-05 00:03:47

标签: ember.js

如何访问新Ember路由器的实例? API文档似乎是指旧路由器或不正确:http://emberjs.com/api/classes/Ember.Router.html

3 个答案:

答案 0 :(得分:35)

通过全局常量不容易访问RouterV2,这使得以“错误”方式执行操作变得更加困难。要记住的主要事情是你不应该通过全局变量访问路由器(或其他任何东西)。这样做通常是不好的做法,导致代码很难测试。不幸的是,旧的路由器很容易做App.router.transitionTo('whatever')这样的事情 - 你可以找到所有这些的例子,但这不是一个好主意。

ember不是使用全局引用,而是仅在需要它的地方为路由器注入本地引用。

  • 来自模特:难以接近。模型不应该与路由器通信
  • 来自控制器:router = this.get('target')
  • 从视图中看:View不应该访问路由器,但它发送给控制器的事件会冒泡。例如:this.get('controller').send('search', term)
  • 从模板:使用{{action}}{{#linkTo}}帮助程序发送事件(通过控制器)或转换到其他网址。

有关更多详细信息,请参阅有关此提交的说明: https://github.com/emberjs/ember.js/commit/5becdc4467573f80a5c5dbb51d97c6b9239714a8

**更新**

我在1月EmberNYC聚会的新路由器上详细介绍了闪电话题 - 幻灯片在这里:How I learned to stop worrying and love the router

答案 1 :(得分:1)

我相信这在所有地方都有效:

App.Router.router.transitionTo('home')

我在视图中使用它。我知道这里有一点代码味道。但是,它有效。

答案 2 :(得分:1)

你可以试试这个:

App.__container__.lookup('router:main').transitionTo('name_of_your_route');
相关问题