Вот что у меня есть. Мне нужны categories
которые будут доступны в HomeController
и NavbarController
.
$stateProvider
.state('master', {
abstract: true,
views: {
'navbar@': {
templateUrl: 'views/partials/navbar.default.html',
controller: 'NavbarController as nb',
}
},
resolve: {
categories: function(Category) {
return Category.getList({ depth: 0 });
},
}
})
.state('home', {
parent: 'master',
url: '/',
views: {
'main@': {
templateUrl: 'views/home/home.html',
controller: 'HomeController as hc',
}
},
resolve: {
deals: function(Deal) {
return Deal.getList();
},
}
});
Согласно документации
Дочерние состояния наследуют разрешенные зависимости от родительского состояния (состояний), которые они могут перезаписать. Затем вы можете вводить разрешенные зависимости в контроллеры и разрешать функции дочерних состояний.
$stateProvider.state('parent', {
resolve:{
resA: function(){
return {'value': 'A'};
}
},
controller: function($scope, resA){
$scope.resA = resA.value;
}})
.state('parent.child', {
resolve:{
resB: function(resA){
return {'value': resA.value + 'B'};
}
},
controller: function($scope, resA, resB){
$scope.resA2 = resA.value;
$scope.resB = resB.value;
}
В нем также говорится:
Ключевое слово разрешения ДОЛЖНО относиться к состоянию без представлений (если вы используете несколько видов). Ключи разрешения ДОЛЖНЫ быть введены в дочерние состояния, если вы хотите дождаться, пока обещания будут разрешены до создания экземпляров.
navbar
и main
). Из документов: «Вполне возможно, что у вас есть вложенные состояния, шаблоны которых заполняют пользовательские представления в различных не вложенных местоположениях на вашем сайте. В этом сценарии нельзя ожидать доступа к переменным области видимости родительских состояний в представлениях детей. состояния."