2016-10-31 3 views
1

При переходе с родителя parent.view на parent.view.childs - я не вижу контроллера, связанного с parent.view.childs, вызываемым/загруженным. Но печатает в пределах getChilds(), для которого я вижу сервер, отвечающий с данными childs.Контроллер angularjs не загружается/вызван

Но я не понимаю, почему детские контроллеры не звонят. На консоли нет ошибок.

Есть ли что-то не так с использованием controllerAs: 'vm' в обоих состояниях или что-то еще? Также укажите, как отлаживать переходы состояния?

угловой файл маршрута

.state('parents.view', { 
    url: '/:parentId', 
    templateUrl: 'modules/parents/client/views/view-parent.client.view.html', 
    controller: 'parentsController', 
    controllerAs: 'vm', 
    resolve: { 
    parentResolve: getparent 
    }, 
    data: { 
    pageTitle: 'parent {{ parentResolve.name }}' 
    } 
}) 
.state('parents.view.childs', { 
    url: '/childs', 
    templateUrl: 'modules/childs/client/views/list-childs.client.view.html', 
    controller: 'childsListController', 
    controllerAs: 'vm', 
    resolve: { 
    parentResolve: getchilds 
    }, 
    data: { 
    pageTitle: 'childs List' 
    } 
}) 

getchilds.$inject = ['$stateParams', '_childsService']; 

function getchilds($stateParams, _childsService) { 
    console.log('getting childs'); 
    return _childsService.query().$promise; 
} 

контроллер

(function() { 
    'use strict'; 

    angular 
    .module('childs') 
    .controller('childsListController', childsListController); 

    childsListController.$inject = ['$stateParams','$state', 'childResolve']; 

    function childsListController($stateParams,$state,childResolve) { 
    console.log('say hello',childResolve); 
    vm.childs = childResolve; 
    } 
}()); 

редактировать сделал: get_childs() в getchilds()

+1

Содержит ли родительский шаблон 'UI-view'? –

+0

Я думаю, что вы должны добавить абстрактный родительский взгляд –

+0

оба вопроса верны - да, есть мы ui-view и есть абстрактный родительский вид. Извините, я havent опубликовал, поскольку у родителей есть много маршрутов. * State – npr

ответ

1

Чтобы получить ответ:

Когда ребенок не загружен - всегда проверить, что родитель имеет место (держатель) для нее

ui-view="" 

Еще лучше, если есть названные виды, для каждого из них требуется цель

ui-view="name1" 
ui-view="name2" 

и использовать правильное абсолютное именование в дочернем устройстве views :{} определение. Проверьте здесь для получения более подробной информации

1

Вы должны вводить каждый объект решимость как зависимость в соответствующем контроллере.

В вашем childsListController вы только инъекционные childResolve, в то время как только решительность объект, который вы объявили это

parentResolve: getchilds

Я не очень хорошо знаком с этим синтаксисом, но, возможно, проблема заключалась в том, чтобы просто забыть изменить «parentResolve» на «childResolve» в состоянии parent.view.childs?

+0

Это был хороший улов - но, к сожалению, он все равно не вызывает childListController.Я попытался просто ввести ошибку, добавив опечатку в инжекции этого контроллера, но ошибок в консоли нет. Я думаю, что он не знает о контроллере. Я изменю часть vm, чтобы узнать, помогает ли она. – npr

+0

Работало ли оно после изменения части 'vm'? –

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