2015-09-05 83 views
0
.when('/',{ 
    controller : 'secondController', 
    activeTab : 'admin' 
}) 

app.controller('secondController', ['$route', function($route){ 
    console.log($route.current.activeTab); 
}]) 

为什么我在这里弄不明白?当我做console.log($route)时,我可以看到对象,这很奇怪。

+2

你真的是'actiiveTab'访问它们?可能只是一个错字。 –

+0

@still_learning没有这不是问题,我修正了错字 –

+0

所以我猜'$ route.current'不是'undefined',而是'$ route.current.activeTab'。如果'$ route.current'未定义,则该行将崩溃而不是打印未定义。所以真正的问题不是'$ route.current',而是它的属性'activeTab'。你期望该物业来自哪里? –

回答

1

$ route.current在$rootScope.$on '$locationChangeSuccess'或控制器中可用。但是,如果您想在路线解决之前访问当前路线(或预期当前路线),例如在$rootScope.$on "$locationChangeStart"或在您的运行或配置功能中,则可以使用$route.routes[$location.path()]

但请注意,带参数的路由将导致错误$route.routes[$location.path()],这是重要的,因为$route.routes[key]$location.path()的密钥将不匹配。您可以通过控制台日志记录$location.path()$route.routes内部运行功能证明这一点。

如果连接额外的自定义属性您的路线,那么你可以很容易地$route.routes[$location.path()]$route.routes[$location.path()].isLoginRequired