对于这样定义的路线:
$routeProvider
.when('/',
{
templateUrl:'views/login.html',
controller:'Login',
private:false
});
例如,如何访问private
事件中的$routeChangeStart
属性?
目前我正在使用current.$$route.private
来获取它,但似乎错了。
感谢。
答案 0 :(得分:20)
实际上recommended将所有带有路径的自定义数据放在“数据”对象中。
$routeProvider
.when('/',
{
templateUrl:'views/login.html',
controller:'Login',
data: {
private: false
}
});
以下是我访问路线参数的方法
$rootScope.$on( "$routeChangeStart", function(event, next, current) {
next.data.private;
});
routeChangeStart事件的第二个参数是被调用的路由对象。另一个优点是data
对象中的任何内容都传递给子状态。
答案 1 :(得分:1)
$routeChangeStart
在路线更改之前发生,因此您需要查看next
。从下一个inherits from next.$$route
开始,无需使用$$route
。
angular.module('example', ['ngRoute'])
.config(function($routeProvider) {
$routeProvider.when('/', {
controller: 'MyCtrl',
template: '<b>isPrivate: {{isPrivate}}</b>',
private: false
});
})
.run(function($rootScope) {
$rootScope.$on('$routeChangeStart', function(event, next, current) {
/*
* this is fired prior to the route changing, so your params will be on
* next. Here we just attach it $rootScope as an example.
* note that you don't need to use next.$$route since $$route is private,
* and next inherits from next.$$route. */
*/
$rootScope.isPrivate = next['private'];
});
})
.controller('MyCtrl', function($scope) {
})