2016-06-09 1 views
1

В угловом приложении у меня есть 2 страницы, каждая из которых соответствует уровню пользователя privileged. для этого как я могу перенаправить шаблоны от router с помощью resolve или без?Угловой маршрут: как переключить шаблон из метода `resolve`?

Какой будет правильный способ?

здесь является то, что я ищу:

$routeProvider.when('/secretpage' , { 
     templateUrl: null,   
     resolve:{ 
      "check":function(accessFac,$location){ 
       if(accessFac.checkPermission()){  
//check if the user has permission -- This should happen before the page loads 
return this.template: "templates/secretpage.html" 

       } else { 

        this.template: "templates/secretlesspage.html" 
       } 
      } 
     } 
}) 

ответ

1

Лучшим и чистым способом является наличие 2 маршрутов, скажем /secretpage и /secretless, и перенаправление на основе привилегии usi ng ниже конфигурации маршрута:

$routeProvider 
    .when('/secretpage' ,{ 
    templateUrl: "templates/secretpage.html",   
    resolve:{ 
     "check":function(accessFac,$location){ 
      if(!accessFac.checkPermission()){  
       $location.path('/secretless') 
      } 
     } 
    } 
    }) 
    .when('/secretless', { 
    templateUrl: "templates/secretlesspage.html", 
    resolve: { 
     "check":function(accessFac,$location){ 
     if(accessFac.checkPermission()){  
      $location.path('/secret') 
     } 
     } 
    } 

    }) 
0

Общий подход, чтобы обеспечить страницы, чтобы использовать $routeChangeStart событие транслируемое до изменения маршрута:

angular.module('myApp', []) 
.run(function($rootScope, $location, accessFac) { 
    $rootScope.$on('$routeChangeStart', 
     function(evt, next, curr) { 
      if (!accessFac.checkPermission()) { 
       $location.path('/login'); // redirect 
      } 
    }) 
}); 

https://stackoverflow.com/a/11542936/2430054

Смежные вопросы