Попытка перенести приложение angularjs для использования новой версии angular-ui-router
1.0.14 и наткнулась на проблему при попытке изменить $stateParams
в разрешении состояния.
Например, ранее (при использовании angular-ui-router
0.3.2) изменение $stateParams
работало следующим образом:
$stateProvider.state('myState', {
parent: 'baseState',
url: '/calendar?firstAvailableDate',
template: 'calendar.html',
controller: 'CalendarController',
controllerAs: 'calendarCtrl',
resolve: {
availableDates: ['CalendarService', '$stateParams', function(CalendarService, $stateParams) {
return CalendarService.getAvailableDates().then(function(response){
$stateParams.firstAvailableDate = response[0];
return response;
});
}]
}
})
Проблема заключается в том, что firstAvailableDate
заполняется после разрешения, и я не знаю, как обновить $transition$.params()
во время разрешения при использовании новой версии angular-ui-router
1.0.14.
Я попытался и смог обновить параметр url с помощью
-
запуск
$state.go('myState', {firstAvailableDate : response[0]})
, но это перезагружает состояние, поэтому экран мерцает -
изменен
$transition$.treeChanges().to[$transition$.treeChanges().length-1].paramValues.firstAvailableDate = response[0];
, чтобы фактически переопределить параметры. Я сделал это после просмотра реализации наparams()
для$transition$
.
Несмотря на то, что оба эти параметра работают, они, похоже, являются хаками, а не книжными реализациями.
Каков правильный подход к использованию при попытке изменить параметры внутри решения?