2017-01-24 54 views
0

使用角度ui-router我試圖根據condition.i.e做出嵌套路由。要在加載狀態之前檢查條件。加載狀態之前的角度ui路由檢查條件

.state('main.home', { 
     url: "/:cnt", 
     abstract: true, 
     templateUrl: function ($stateParams) { 
      return template1; 
     }, 
     controller: "myController", 
     resolve: { 
      //Some model 
      }], 

      lazy: ['$ocLazyLoad', '$stateParams', function ($ocLazyLoad, $stateParams) { 
       //lazily loaded controllers 
      }] 
     }, 
     onEnter: updateAppValues, 
    }).state('main.home.default', { 
     url: '', 
     templateUrl: function ($stateParams) { 
      return template2; 
     }, 
     resolve: { 
      lazy: ['$ocLazyLoad', function ($ocLazyLoad) { 
       //lazily loaded controllers 
      }] 
     }, 
     controller: 'myDefaultController', 
    }) 

基本上嵌套路由器main.home.default必須有條件地加載

if(something){ 
    //loaded state main.home.default 
} 

我怎樣才能做到這一點?

+0

你可以寫一個如果決心和負的情況下,可以用$位置路徑狀態重定向到其他航線 –

+1

你檢查[我的回答](http://stackoverflow.com/a/41824348/4927984)解決了你的問題? :) – Mistalis

回答

0
app.run(function($rootScope, $state) { 
    $rootScope.$on("$stateChangeStart", function(event, toState, toParams, fromState, fromParams) { 
    if (toState.name == 'login'){ //if the name of that state is login 
    //go to login page 
     } 
    }); 
}); 

這是否告訴您任何想法?或

app.run(function($rootScope, $state){ 
    $rootScope.$on("$stateChangeStart", function(event, toState, toParams, fromState, fromParams) { 
     if(*your condition*) { 
     $state.transitTo('stateYouWantToGo') 
     event.preventDefault() 
     } 
    }); 
}); 
1

可以趕上事件路線的改變有:

$rootScope.$on("$routeChangeStart", function(event, next, current) { 
    if(next.$$route == 'routeYouWantToAvoid') { // Or whatever you want 
     $state.transitTo('main.home.default'); 
    } 
}); 
  • next是你要的路線。

  • current您來自的路線。

這是documentation,如果您需要更多信息。

0

如果在main.home.default的解析條件中可以添加條件。例如:

resolve:{ 
    "check":function($location){ 
     if('Your Condition'){ 
      //Do something 
     }else{ 
      $location.path('/'); //redirect user to home. 
      alert("You dont belong here"); 
     } 
    } 
} 
相關問題