Отредактировано с более подробной информацией
Новый вопрос здесь, я уверен. Я пытаюсь сделать что-то, что, по моему мнению, было бы простым, но я никуда не денусь.
В принципе, у меня есть родительское состояние с несколькими дочерними состояниями. Я хочу загрузить некоторые данные в разрешение родительского состояния, чтобы он был доступен для всех дочерних состояний. Для этого мне нужен параметр (контекст), который передается дочернему состоянию. Я получаю его через $state.params. код (некоторые опущены для ясности) выглядит следующим образом:
.state('pbr', {
url: "/pbr",
templateUrl: "pbr/pbr.html",
controller: "pbrBaseCtrl",
abstract: true ,
resolve: {
dpts: function(NavDPT, $state) {
return NavDPT.query({context: $state.params.context}).$promise;
}
}
})
.state('pbr.review', {
url: "/review/{context}?div",
templateUrl: "pbr/pbr-review.html",
controller: "pbrReviewCtrl"
})
Из того, что я понимаю, $state.params должен содержать переданные параметры для родительского и дочернего состояний, тогда как $stateParams имеют параметры только для активного состояния.
Во всяком случае, то, что я вижу, заключается в том, что $state.params не заполняется до того, как произойдет разрешение, и, таким образом, выборка данных не удалась. Тем не менее, он все-таки заселен. Кажется, я не могу найти способ дождаться появления $state.params до получения данных. Я пробовал обернуть вещь в тайм-аут и т.д.
Я попытался вместо этого использовать параметры запроса и задал параметр запроса на родительском уровне, и я наблюдаю это же поведение - newcontext пока недоступен, когда происходит разрешение.
.state('pbr', {
url: "/pbr?newcontext",
templateUrl: "pbr/pbr.html",
controller: "pbrBaseCtrl",
abstract: true ,
resolve: {
dptsResource: 'NavDPT',
dpts: function(dptsResource, $state, $log) {
$log.info("state.params is also ",$state.params);
return dptsResource.query({context: $state.params.newcontext}).$promise;
}
}
})
Спасибо.
Крис