我已经在我的父状态上定义了一个params对象,并且想要为这些属性,子状态指定值,并且将该值保留到其他状态。当我导航到子状态时,我看到$ stateParams.property,但是在给$ stateParams.property赋值后,该值不会持续到下一个兄弟状态。
.state({
name: 'parent',
url: '/parent',
templateUrl: 'app/parent.html',
controller: 'parentController',
controllerAs: 'vm',
resolve: {
user: function(){
return { user: {} };
},
//regionsCountriesInfo: ['$stateParams', function($stateParams){
// return $stateParams.regionsCountriesInfo;
//}],
// edit
regionsCountriesInfo: function(){
return { value: [] };
}
},
children: [
{
name: 'region',
url: '/region',
templateUrl: 'app/region.html',
controller: 'regionController',
controllerAs: 'vm',
ncyBreadcrumb: {
label: 'Regions',
parent: 'parent'
},
resolve: {
user: function(user) {
return user;
},
// edit
regionsCountriesInfo: function(regionsCountriesInfo) {
return regionsCountriesInfo;
}
}
},
{
name: 'user',
url: '/user',
templateUrl: 'app/user.html',
controller: 'userController',
controllerAs: 'vm',
ncyBreadcrumb: {
label: 'Users',
parent: 'parent'
},
resolve: {
user: function(user) {
return user;
},
// edit
regionsCountriesInfo: function(regionsCountriesInfo) {
return regionsCountriesInfo;
}
}
},
// regionController
regionController.$inject = [
'$scope',
'$translate',
'$uibModal',
'$state',
'$stateParams',
'$rootScope',
'regionsCountriesInfo'
];
function regionController($scope, $translate, $uibModal, $state, $stateParams, $rootScope, regionsCountriesInfo) {
...
vm.selectedRegions = [];
...
vm.selectedRegions.push(region)
console.log('regionController regionsCountriesInfo');
console.log(regionsCountriesInfo);
regionsCountriesInfo = vm.selectedRegions;
console.log('regionController regionsCountriesInfo');
console.log(regionsCountriesInfo);
// regionController console output
regionController regionsCountriesInfo
undefined
regionController regionsCountriesInfo
[Object]
// userController
userController.$inject = [
'$translate',
'$uibModal',
'$state',
'$scope',
'$timeout',
'$stateParams',
'$rootScope',
'regionsCountriesInfo'
];
function userController($translate, $uibModal, $state, $scope, $timeout, $stateParams, $rootScope, regionsCountriesInfo) {
...
console.log('userController regionsCountriesInfo');
console.log(regionsCountriesInfo);
// userController console output
userController regionsCountriesInfo
undefined
为什么$ stateParams.regionsCountriesInfo空的用户状态,当我在该地区的同级状态赋值给它?
这是在ui路由器指南[重要$ stateParams陷阱](https://github.com/angular-ui/ui-router/wiki/URL-Routing#important-stateparams-gotcha)解释 – Erevald