访问routeProvider的路由属性

时间:2013-11-08 15:16:16

标签: angularjs route-provider

对于这样定义的路线:

$routeProvider
.when('/',
{
    templateUrl:'views/login.html',
    controller:'Login',
    private:false
});

例如,如何访问private事件中的$routeChangeStart属性? 目前我正在使用current.$$route.private来获取它,但似乎错了。

感谢。

2 个答案:

答案 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) {

  })