如何访问新Ember路由器的实例? API文档似乎是指旧路由器或不正确:http://emberjs.com/api/classes/Ember.Router.html
答案 0 :(得分:35)
通过全局常量不容易访问RouterV2,这使得以“错误”方式执行操作变得更加困难。要记住的主要事情是你不应该通过全局变量访问路由器(或其他任何东西)。这样做通常是不好的做法,导致代码很难测试。不幸的是,旧的路由器很容易做App.router.transitionTo('whatever')
这样的事情 - 你可以找到所有这些的例子,但这不是一个好主意。
ember不是使用全局引用,而是仅在需要它的地方为路由器注入本地引用。
router = this.get('target')
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');