我正在创建一个帮助器,我需要访问当前的路由名称。我正在使用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
答案 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');
});
这假设您希望助手只返回值。如果你需要返回别的东西,至少我得到了你,我相信你可以从这里拿走它。