在AngularJS中使用state提供时,App.js控制器出现问题

时间:2016-07-11 23:33:07

标签: angularjs angular-ui-router

当我运行我的应用程序时,它会指向localhost:9080 /#/并且我在app.html中设置的页眉和页脚被称为:

<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则转到用户A仪表板,如果是用户B则转到用户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('/');
}];

我在这里遇到三个问题: 1)每当我刷新页面时,都会调用app.js,它会将我带回仪表板。当我在仪表板中时 页面并单击刷新,然后再次调用app.js。 2)当我在BDetailspage并单击refesh时,它会将我带到仪表板,我希望它在同一页面中。 3)当我点击localhost:9080 /#/最初它调用app.js并且url更改为localhost:9080 /#/ A.当我删除A并点击回车时 控制器不会被调用。只有在刷新页面时才会调用它。

任何人都可以告诉我如何修复它。

1 个答案:

答案 0 :(得分:1)

当您刷新AppCtrl正在调用服务并更改状态。因此,您的州不会恢复。

在拨打电话之前,您可以检查状态并在必要时拨打电话。