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
一起工作。这很奇怪,因为我控制台.log
ed
next`,它只显示为
$$route
上的一个属性。抱歉,Nicolas,我否决并评论了它不起作用,然后意识到我正在检查OnLocationChangeStart而不是routeChangeStart中的下一个属性。现在我不能再投票了,显然是因为已经一个多小时了,再一次,对不起。我的互联网点数!!!!!把我还给NAOW。JK我很高兴看到人们仍在使用/校对我的答案。你能举出推荐链接的地方吗?你的链接指的是ui路由器文档,而不是本机路由。您是否有ngRoute文档的链接?找不到。德克萨斯州