访问组件

时间:2017-08-26 15:33:49

标签: javascript jquery ember.js

我的自定义Ember组件位于控制器内部。

现在我正在尝试动态获取当前路由名称

所以我可以使用

访问控制器
this.get('parentView')

但在此之后我无法获得当前的路线名称。如何获取当前路径名称? 我试着做了

this.get('parentView').routeName

3 个答案:

答案 0 :(得分:1)

首先,您不应该根据组件中的当前路由实现逻辑。您的组件不应该知道它们的放置路线。但当然可能有一些例外情况,例如breadcrump组件,菜单组件......

无论如何,你的问题的答案是:

  1. 使用application controller
  2. application controller具有currentRouteName属性。

    您可以使用application controller,例如:

    Ember.getOwner(this).lookup('controller:application').get('currentRouteName')
    
    1. 使用router
    2. private -router service注入您的组件或查找路由器实例,例如:

       Ember.getOwner(this).lookup('router:main').get('currentRouteName');
      

答案 1 :(得分:1)

在ember中2.15将是一个路由器服务。目前有is a polypill for older ember versions

编辑:Ember 2.15已于2017年9月1日发布。您可以在release notesapi documentation中找到有关RouterService的一些信息。请注意,api文档目前未提及由于代码中缺少文档而暴露的属性。除了ember-router-service-polyfill之外,您还可以在早期版本中通过-routing访问私有RoutingService

答案 2 :(得分:0)

ember 3.20我可以通过这种方式访问​​当前路由名称

this.YOURAPP._applicationInstances.values().next().value.router.currentRouteName