Вы можете добавить решает в ваших штатах, чтобы добавить то, что вы хотите в ваших контроллерах.
Используйте угловую службу для хранения ваших вещей, потому что они являются синглетонами, то есть они создаются только один раз, поэтому данные, хранящиеся в них, всегда одинаковы.
.state('userManagement', {
url: '/user-management',
templateUrl: 'components/userManagement/UserMgmt.view.html',
controller: 'UserMgmtCtrl',
controllerAs: 'vm',
resolve: {
yourStuff: function (StorageService) {
return StorageService.getStuff();
}
}
})
.state('userDetail', {
url: '/user-detail/:userId',
templateUrl: 'components/userManagement/UserDetail.view.html',
controller: 'UserDetailCtrl',
controllerAs: 'vm',
resolve: {
yourStuff: function (StorageService) {
return StorageService.getStuff();
}
}
})
app.factory("StorageService", function () {
var yourStuffStorage = {
"initial": "stuff"
};
return {
getStuff: getStuff,
setStuff: setStuff
};
function getStuff () {
return yourStuffStorage;
}
function setStuff (newStuff) {
yourStuffStorage = angular.copy(newStuff);
}
})
app.controller("UserMgmtCtrl", function (yourStuff) {
console.log("do stuff with your stuff 1", yourStuff);
});
app.controller("UserDetailCtrl", function (yourStuff) {
console.log("do stuff with your stuff 2", yourStuff);
});
Если вам интереснопочему мы не внедрили службу и не запросили данные, это потому, что в ui-router считается оптимальной практикой извлекать данные (иногда через обещания) и передавать результат в контроллер, чтобы состояние не загружалось дозагрузка данных.
Надеюсь, это поможет:)