控制器什么时候实例化?这是你第一次访问这个州吗?另外,当您重新访问状态时会发生什么,新控制器是否会再次实例化?
假设我有两个状态,A和B,并且我在状态B的顶部放置一个警告声明。我注意到如果从状态A转到B状态B的警告语句出发,它告诉我控制器得到了实例化。但是假设我从状态A到B再到C并返回到B,警报声明不会消失。但是,如果我从状态A转到B转到C转到B转到A到B,警报声明会再次出现。
以下是我路线的一部分:
州A = app.login
状态B = app.pincodeCreate
州C = app.messagelist
.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()
}
}
}
})
答案 0 :(得分:5)
当您从该州的层次结构树之外的状态转到该状态或其中一个后代时,特定状态的视图控制器会运行。
换句话说,如果您拥有以下层次结构:
A B
/ /
AA C
/ \
C1 C2
然后,从A切换到B将实例化B.然后切换到C(或C1或C2,就此而言),然后回到B,不会重新实例化B的控制器。
如果切换到A(或AA),则A会实例化。然后切换回B将重新实例化B。
因此,很可能在你的情况下,C是B的子状态.A和B在不同的祖先树中。