У меня проблема с вложенными представлениями в ui-router.Предотвратить перезагрузку родительского контроллера в ui-router
Моя раскладка:
site.search ----------------- site.search.runs ----------------- site.search.runs.scheme ----------------- site.search.runs.scheme.payment -----------------
Я не хочу, чтобы изменить URL, поэтому я использую $state.go('', {}, {location:false});
Я также использую $stage.go('^'...)
для вернуться к родителю.
Но когда я нажимаю кнопку «Назад» на сайте site.search.runs.scheme.payment или site.search.runs.scheme - также перезагружается контроллер site.runs (я не использую {reload: true}).
Как предотвратить перезагрузку родительского контроллера верхнего уровня?
Я нашел проблему, такую как моя https://github.com/angular-ui/ui-router/issues/2096
Может ли кто-нибудь мне помочь?
Моя конфигурация
$stateProvider
.state('site', {
abstract: true,
url: '',
template: '<ui-view/>'
})
.state('site.search', {
url: '',
parent: 'site',
controller: 'SearchController',
controllerAs: 'search',
templateUrl: 'js/search/search.tpl.html'
})
.state('site.search.runs', {
url: '',
parent: 'site.search',
params: {back: false, timestamp: 0, search: {}},
controller: 'RunsController as runsCtrl',
templateUrl: 'js/runs/runs.tpl.html'
})
.state('site.search.runs.scheme', {
url: '',
parent: 'site.search.runs',
params: {back: false, run: ''},
controller: 'SchemeController as schemeCtrl',
templateUrl: 'js/scheme/scheme.tpl.html'
})
.state('site.search.runs.scheme.payment', {
url: '',
parent: 'site.search.runs.scheme',
params: {back: false},
controller: 'PaymentController as payCtrl',
templateUrl: 'js/payment/liqpay/payment.tpl.html'
})
});
метод Назад называет это $ state.go ('^', {обратно: истинно}, {место: ложь, наследуйте ложь});
Это невозможно, поскольку вы заменяете содержимое 'ui-view' в каждом новом состоянии. Каждый раз, когда это происходит, вид и контроллеры уничтожаются/восстанавливаются. –
Благодарим вас за быстрый ответ – moro