3

У меня есть этот контроллер:Угловая область видимости одноточечно

class Ctrl{ 
    constructor($http, $scope, $stateParams){ 
    if(!$scope.items){ 
     $http.get(...).then((res)=> { 
     $scope.items = res.data; 
     }); 
    } 

    if($stateParams.id){ 
     $scope.currItem = $scope.items[$statePrams.id]; 
    } 
} 

У меня есть 2 состояния:

.state('dashboard.items', { 
    url: '/items', 
    templateUrl: 'items.html', 
    controller:'Ctrl' 
}) 
.state('dashboard.items.details', { 
    url: '/:id', 
    templateUrl: '/ItemDetails.html', 
    controller: 'Ctrl' 
}) 

Я хочу быть уверен, что элементы массива уже инициализирован, прежде чем я показать подробности одного из них.

Как это возможно без дублирования кода? (Если все остальное и один и тот же код внутри каждого)

Спасибо.

+0

Используйте метод 'resolve' в литеральном объекте' .state', чтобы задержать создание экземпляра контроллера https://github.com/angular-ui/ui-router/wiki#resolve –

+0

Я пробовал его с разрешения, но то на странице списка требуется много времени для загрузки. Я хочу показать страницу списка, загрузить список async, а затем загрузить следующее состояние. – user3712353

ответ

0

вы можете использовать состояние resolve на родительском уровне (то есть точный ответ на ваш вопрос)

или просто воспользоваться услугой и сделать инициализацию там. обслуживание одноточечное.

+0

Я сделал это уже. Проблема в том, что теперь моя страница списка будет загружена только после инициализации списка. Я хочу загрузить страницу списка, а затем загрузить элементы списка. Во всяком случае, есть способ получить доступ к родительскому контроллеру из дочернего элемента, если я буду использовать другой контроллер для ребенка? – user3712353

+0

Посмотрите на второй вариант –

+0

Есть ли способ в угловом ui-route для доступа к родительскому контроллеру? (Без рамки в моем случае ES6) – user3712353

Смежные вопросы