Angularjs 访问路由Provider';s路由属性
对于这样定义的路线:Angularjs 访问路由Provider';s路由属性,angularjs,route-provider,Angularjs,Route Provider,对于这样定义的路线: $routeProvider .when('/', { templateUrl:'views/login.html', controller:'Login', private:false }); 例如,如何访问$routeChangeStart事件中的private属性? 目前我正在使用current.$$route.private获取它,但它似乎是错误的 谢谢。实际上是将所有带有路由的自定义数据放在“数据”对象中 $routeProvider .
$routeProvider
.when('/',
{
templateUrl:'views/login.html',
controller:'Login',
private:false
});
例如,如何访问$routeChangeStart
事件中的private
属性?
目前我正在使用current.$$route.private
获取它,但它似乎是错误的
谢谢。实际上是将所有带有路由的自定义数据放在“数据”对象中
$routeProvider
.when('/',
{
templateUrl:'views/login.html',
controller:'Login',
data: {
private: false
}
});
下面是访问路由参数的方法
$rootScope.$on( "$routeChangeStart", function(event, next, current) {
next.data.private;
});
routeChangeStart事件的第二个参数是调用的route对象。另一个优点是
数据
对象中的任何内容都会传递给子状态。$routeChangeStart
发生在路由更改之前,因此您需要查看下一步
。无需使用next.$$route
,因为next$$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) {
})
angular.module('example',['ngRoute']))
.config(函数($routeProvider){
$routeProvider.when(“/”{
控制器:“MyCtrl”,
模板:“isPrivate:{{isPrivate}}”,
二等兵:错
});
})
.run(函数($rootScope){
$rootScope.$on(“$routeChangeStart”,函数(事件、下一个、当前){
/*
*这是在路由更改之前触发的,因此您的参数将处于启用状态
*下一步。这里我们只附加$rootScope作为示例。
*请注意,您不需要使用next.$$route,因为$$route是专用的,
*next继承自next.$$route*/
*/
$rootScope.isPrivate=next['private'];
});
})
.controller('MyCtrl',函数($scope){
})
是的,好的,下一步
,但问题是,使用$$route
可以吗?在我看来,它似乎是由Angular内部使用的,而不是由实现者使用的。假设如果您检查一个范围,您可能还会注意到一些以$$开头的属性。这些属性被认为是私有的,不应该被访问或修改。
因此它似乎不是。奇怪的是,它只是在没有$$route
的情况下工作。不过谢谢。如果您查看下一步,它看起来像是继承自$$route
(设置断点并选中next.\uuuu proto\uuuu
),因此所有路由属性都应该启用next
。很好,是的。不过,上面的尼古拉斯·瓦兹发现了这一点。谢谢。它与next.hideHeader
一起工作。这很奇怪,因为我控制台.loged
next`,它只显示为$$route
上的一个属性。抱歉,Nicolas,我否决并评论了它不起作用,然后意识到我正在检查OnLocationChangeStart而不是routeChangeStart中的下一个属性。现在我不能再投票了,显然是因为已经一个多小时了,再一次,对不起。我的互联网点数!!!!!把我还给NAOW。JK我很高兴看到人们仍在使用/校对我的答案。你能举出推荐链接的地方吗?你的链接指的是ui路由器文档,而不是本机路由。您是否有ngRoute文档的链接?找不到。德克萨斯州