2016-07-11 74 views
0

當我運行我的應用程序將其引導到localhost:9080 /#/與我建立在app.html被稱爲頁眉和頁腳:App.js控制器問題,同時使用狀態提供AngularJS

<div id="wrap"> 
    <main id="main" class="container-fluid clear-top"> 
    <nav class="navbar navbar-default navbar-fixed-top"> 
     <div class="container-fluid"> 
     <div class="navbar-header"> 
      //content here 
     </div> 
     </div> 
    </nav> 
    <div ui-view id='content-container'></div> 
    </main> 
</div> 
<footer class="footer"> 
    //content here 
</footer> 

在我有以下代碼app.js:

angular.module(constants.MODULE_NAME).controller('AppCtrl', function ($scope, $state, $log, $http) { 

    $scope.role = ''; 

    $http.get("htttp://localhost:8082/service/getUserRole") 
     .then(function (response) { 
      $scope.role = response.data.context; 
      debugger; 
      if ($scope.role.toLowerCase() == "A") { 
       //direct view to A dashboard 
       $state.go("app.A"); 
      } else if($scope.context.toLowerCase() == "B"){ 
       //direct view to emplBoyee dashboard 
       $state.go("app.B"); 
      } 
      else{ 
       //do nothing 
       $state.go("app"); 
      }}); 
}); 

第一個頁面加載基於用戶如果用戶A然後它給用戶的儀表板,如果用戶B然後它給用戶乙 儀表板。

現在在A.html和B.html中有鏈接去用戶。以下是在router.js代碼:

export default ['$stateProvider', '$urlRouterProvider', ($stateProvider, $urlRouterProvider) => { 
    $stateProvider 

    .state('app', { 
     url: '/', 
     template: require('./app.html'), 
     controller: 'AppCtrl', 
     controllerAs: 'app' 
    }) 

    .state('app.A', { 
     url: 'A', 
     template: require('./A/index.html'), 
     controller: 'ACtrl', 
     controllerAs: 'a' 
    }) 

    .state('app.ADetails){ 
     url: 'ADetails/:userId' 
     template: require('./A/ADetails/index.html'), 
     controller: 'ADetailsCtrl', 
     controllerAs: 'adetails' 
    }) 


    .state('app.B', { 
     url: B 
     template: require('./B/index.html'), 
     controller: 'B', 
     controllerAs: 'B' 
    }) 
    .state('app.BDetails){ 
     url: 'BDetails/:userId' 
     template: require('./B/BDetails/index.html'), 
     controller: 'BDetailsCtrl', 
     controllerAs: 'bdetails' 
    }); 


    $urlRouterProvider.otherwise('/'); 
}]; 
我這裏有三個問題

:每當我刷新頁面app.js被稱爲 1),它把我帶回到了儀表板。當我在儀表板 頁面中並單擊刷新時,再次調用app.js。 2)當我在BDetailspage並點擊refesh它將我帶到儀表板,我希望它在同一頁面。 3)當我打本地主機:9080 /#/最初它調用app.js和URL更改爲本地主機:9080 /#/ A.現在當我刪除A並擊中輸入 控制器不會被調用。它得到僅在刷新頁面時才被調用。

任何人都可以讓我知道它是如何修復的。

回答

1

當您刷新AppCtrl正在調用服務和更改狀態。由於這個原因你的狀態沒有恢復。

在撥打服務電話之前,您可以檢查狀態並在需要時撥打電話。

+0

感謝您的幫助。我能夠解決問題1和2.但我仍然遇到問題#3。當我打localhost:9080 /#/最初它調用app.js和URL更改爲localhost:9080 /#/答:現在當我刪除A並點擊進入時,控制器不會被調用。它只在刷新頁面時才被調用。 – Valla

+0

我不認爲控制器會被再次調用,因爲該狀態已經被初始化。也許你可以聽狀態變化,並檢查你是否想顯示A或B? –

相關問題