Access routeProvider's route properties

前端 未结 2 987
耶瑟儿~
耶瑟儿~ 2021-02-06 02:10

For a route defined like this:

$routeProvider
.when(\'/\',
{
    templateUrl:\'views/login.html\',
    controller:\'Login\',
    private:false
});
相关标签:
2条回答
  • 2021-02-06 02:41

    $routeChangeStart happens prior to the route changing, so you need to look at next. There's no need to use next.$$route since next inherits from $$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) {
    
      })
    
    0 讨论(0)
  • 2021-02-06 02:53

    It is actually recommended to put all your custom data with routes inside a "data" object as such.

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

    Here is how I access route params

    $rootScope.$on( "$routeChangeStart", function(event, next, current) {
       next.data.private;
    });
    

    The second parameter of the routeChangeStart event is the route object that is called. Another advantage is that anything in the data object is passed to children states.

    0 讨论(0)
提交回复
热议问题