angularjs控制器实例化,ui路由器



控制器何时实例化?这是你第一次访问那个州吗?此外,当您重新访问状态时会发生什么,新的控制器会再次实例化吗?

假设我有两个状态,A和B,我把一个警告语句放在状态B的顶部。我注意到,如果从状态A到B,状态B的警告语句会触发,这告诉我控制器被实例化了。但是,假设我从状态A到状态B到状态C,再回到状态B,警报语句不会熄灭。但是,如果我从状态B到到状态C到状态B,则警报语句会再次熄灭。

以下是我的部分路线:

状态A=app.login

状态B=app.pincode创建

状态C=应用程序消息列表

.run ($ionicPlatform, startup) ->
  $ionicPlatform.ready(startup.ionicReady)
.config (googleAnalyticsCordovaProvider, $stateProvider, $urlRouterProvider) ->
  $stateProvider
    .state('app', {
      url: '/app',
      abstract: true,
      templateUrl: 'templates/menu.html',
      controller: 'AppController'
    })
    .state('app.pincodeCreate', {
      url: '/pincode',
      views: {
        menuContent: {
          templateUrl: 'templates/pincode.html',
          controller: 'PincodeController'
        }
      }
    })
    .state('app.login', {
      url: '/login',
      views: {
        menuContent: {
          templateUrl: 'templates/login.html',
          controller: 'LoginController'
        }
     }
   })
   .state('app.messagelist', {
      url: '/messagelist',
        views: {
          menuContent: {
            templateUrl: 'templates/messagelist.html',
            controller: 'MessageListController',
            resolve: {
              activities: (utils, store, $state) ->
                utils.getActivities().then ((activities) ->
                  store.isUserLoggedIn(true)
                 activities
              ), (error) ->
              $state.reload()
           }
        }
      }
    })

当您从某个特定状态的层次结构树外的状态转到该状态或其子体时,该状态的视图控制器将运行。

换句话说,如果你有以下层次结构:

     A     B
    /     /
   AA    C
        / 
       C1 C2

然后,从A切换到B将实例化B。然后切换到C(或者C1或C2),然后再切换回B,将不会重新实例化B的控制器。

如果切换到A(或AA),则A将实例化。然后切换回B将重新实例化B。

所以,在你的情况下,C很可能是B的子状态。a和B在不同的祖先树中。

最新更新