在ember 2.0中获取currentPath

时间:2015-06-24 23:44:29

标签: ember.js

在Ember 2.0控制器中将被弃用。如何访问currentPath。目前我正在做以下事情。

  needs: ["application"],

  routeName : function() {
    return this.get('controllers.application.currentPath');
  }.property('controllers.application.currentPath),

3 个答案:

答案 0 :(得分:4)

您可以执行类似

的操作
applicationController: Ember.inject.controller("application"),
routeName : function() {
    return this.get('applicationController.currentPath');
}.property('applicationController.currentPath)

答案 1 :(得分:2)

如果我没记错,ember 1.8添加了routeName属性来路由对象,你可以通过调用this.routeName从路由访问它(我假设这是你想要的,因为你的cp被命名为)。

另外,您应该开始使用新的计算属性语法:

routeName: Ember.computed('controllers.application.currentPath', function() {
  return this.get('controllers.application.currentPath');
}),

答案 2 :(得分:1)

以3.9 API文档为例,这是您现在要执行的操作。可能建议使用公共API(currentRouteName,currentURL),但目前超级容易重构。

export default Service.extend({
  router: service(),

  whereAmI: computed('router.currentRouteName', function() {
    return this.router._router.currentPath; // 'users.index'
  })
});

https://api.emberjs.com/ember/3.9/classes/RouterService https://github.com/emberjs/ember.js/blob/v3.9.0/packages/%40ember/-internals/routing/lib/system/router.ts#L1631