如何在Ember的帮助器中获取当前路径路径?

时间:2015-05-13 20:20:11

标签: javascript ember.js ember-cli

我正在创建一个帮助器,我需要访问当前的路由名称。我正在使用Ember CLI和ES6,因此我无法访问<cfquery name="myquery" datasource="mydatasource"> SELECT id, status , SUM(CASE WHEN status = 'Complete' THEN 1 ELSE 0 END) OVER ( ) AS complete_cnt FROM mytable </cfquery> <cfset totalReturned = myquery.recordcount /> <cfset totalReturnedComplete = myquery.complete_cnt /> 对象。

这就是我所拥有的。

App

2 个答案:

答案 0 :(得分:1)

随着向组件的转变,获取路由名称变得更加困难。最好的方法是添加初始化程序,例如

ember g initializer router

(来自命令行)和

export function initialize(application) {
  application.inject('route', 'router', 'router:main');
  application.inject('component', 'router', 'router:main');
}

export default {
  name: 'router',
  initialize
};

在initializers / router.js中。如果需要,您也可以注入控制器。然后只需做

this.get('router.currentRouteName');
在JS中

,或

{{router.currentRouteName}}

在模板中。

这是我找到的唯一可靠方法,并且可以在Ember 2.4中观察到

答案 1 :(得分:0)

虽然它是一个私有API,但我知道在需要时我会使用和滥用容器。应用程序控制器将当前活动的路由作为名为currentPath的属性。

import Ember from 'ember';

export default Ember.Handlebars.makeBoundHelper( function(value, options) {
    var appCtrl = this.container.lookup("controller:application");
    return appCtrl.get('currentPath');
});

这假设您希望助手只返回值。如果你需要返回别的东西,至少我得到了你,我相信你可以从这里拿走它。