2016-07-11 5 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> 

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、それがユーザーBにそれを行く場合:私は、次のコードを持っているapp.jsで

ダッシュボード。

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)私がlocalhost:9080 /#を押すと、最初にapp.jsが呼び出され、localhost:9080 /#/ A.にURLが変更され、Aを削除してEnterキーを押すと、コントローラはcalled.Itを取得しませんページを更新するときにのみ呼び出されます。

誰でも私にそれを修正する方法を教えてもらえますか?

答えて

1

AppCtrlを更新すると、サービスが呼び出され、状態が変更されます。このため、あなたの状態は復元されません。

サービスを受ける前に、状態を確認し、必要に応じて電話をかけることができます。

+0

ご協力いただきありがとうございます。私は問題1と2を修正することができました。しかし、私はまだissue#3の問題を抱えています。localhost:9080 /#/を打つと、最初にapp.jsが呼び出され、localhost: A.Aowを削除してコントローラを呼び出すと、呼び出されません。これは、ページを更新するときにのみ呼び出されます。 – Valla

+0

コントローラは、その状態が既に初期化されているので、再び呼び出されるとは思わない。あなたは状態の変化を聞くことができ、あなたはAかBを表示するかどうかをチェックできますか? –

関連する問題