Я использую ui-router, и у меня есть конфигурация, в которой я использую родительское представление, у которого есть контроллер и дочерний вид, которые также имеют свои собственные контроллеры. Каждый раз, когда я перехожу к одному из дочерних представлений, родительский контроллер создается снова и, следовательно, выполняет ненужные запросы на сервер. Я хочу, чтобы иметь возможность перемещаться между дочерними состояниями и повторно использовать переменные, которые были разрешены родительским контроллером.Родительский контроллер создается каждый раз, когда дочерний вид называется
Как я могу предотвратить создание экземпляра родительского контроллера каждый раз?
Это моя конфигурация маршрутизации:
$stateProvider
.state('researchLayoutEditor', {
url: '/research/:researchId/layoutEditor/:orderInGroup',
controller: 'layoutEditorController',
controllerAs: 'layoutEditorCtrl',
templateUrl: 'app/researchManagement/researchLayoutEditor/layoutEditor.html',
redirectTo: 'researchLayoutEditor.slide',
params: {
group: 'A',
orderInGroup: '0'
},
resolve: {
researchLayout: function (researchesService, $stateParams) {
return researchesService.getResearchLayout($stateParams.researchId, false);
},
research: function (researchesService, $stateParams) {
return researchesService.getResearch($stateParams.researchId);
}
}
}).state('researchLayoutEditor.slide', {
url: '/textual',
templateUrl: 'app/researchManagement/researchLayoutEditor/textSlide.html',
controller: 'textSlideController',
controllerAs: 'txtSlide'
}).state('researchLayoutEditor.movie', {
url: '/video',
templateUrl: 'app/researchManagement/researchLayoutEditor/movieSlide.html',
controller: 'movieSlideController',
controllerAs: 'movieSlide',
resolve: {
movieCategories: function (utilsService) {
return utilsService.getVideoCategories();
}
}
}).state('researchLayoutEditor.memory', {
url: '/memory',
templateUrl: 'app/researchManagement/researchLayoutEditor/memorySlide.html',
controller: 'memorySlideController',
controllerAs: 'memorySlide'
}).state('researchLayoutEditor.question', {
url: '/question',
templateUrl: 'app/researchManagement/researchLayoutEditor/questionSlide.html',
controller: 'questionSlideController',
controllerAs: 'questionSlide'
});
И это HTML:
<div id="mainContent">
<!-- our nested state views will be injected here -->
<div ui-view class="inner-content"></div>
</div>
может посмотреть на принятый ответ на этот вопрос: http://stackoverflow.com/questions/22730868/ui-routers-resolve-functions-only-called-once –
Моя проблема противоположна, я хочу предотвратить перезагрузку родительского контроллера. Самое странное, что первое дочернее состояние (.slide) не перезагружает родительский контроллер при первом посещении страницы ... –
Можете ли вы воспроизвести проблему на http://plnkr.co? –