2015-01-07 4 views
1

У меня следующий вопрос:нагрузки AngularJS UI маршрутизатора же контроллер несколько раз

Это часть моего $ stateProvider:

angular.module('sampleApp').config(function ($stateProvider) { 
$stateProvider 
    .state('property', { 
    url: '/property', 
    templateUrl: 'app/property/property.html', 
    controller: 'PropertyCtrl', 
    authenticate: true, 
    role: 'user' 
    }) 
    .state('property.selected', { 
    url : '/:propertyId', 
    templateUrl : 'app/property/edit/edit-controller.html', 
    controller : 'PropertyEditCtrl' 
    }) 
    .state('property.selected.settings', { 
    url : '/settings', 
    templateUrl : 'app/property/partials/settings.html' 
    }) 
    .state('property.selected.settings.general', { 
    url : '/general', 
    templateUrl : 'app/property/partials/settings-general/settings-general.html', 
    controller : 'SettingsGeneralCtrl' 
    }) 
    .state('property.selected.settings.property', { 
    url : '/property', 
    templateUrl : 'app/property/partials/settings-property/settings-property.html', 
    controller : 'SettingsPropertyCtrl' 
    }) 
    .state('property.selected.settings.extras', { 
    url : '/extras', 
    templateUrl : 'app/property/partials/settings-extras/settings-extras.html', 
    controller : 'SettingsExtrasCtrl' 
    }) 

Что происходит, что контроллер загружается любым государством за пределами " свойство.selected 'load несколько раз. В случае с 'property.selected.settings.general' SettingsGeneralCtrl загружается 28 раз. Если я слушаю событие в этом контроллере и console.log, то что-то регистрируется 28 раз.

Любая идея, почему? Я полностью потерян.

+0

У вас есть ссылка на контроллер, который вы просматриваете с помощью ng-контроллера? –

+0

@ jack.the.ripper У меня нет никаких ссылок за пределами этого состояния. – user3171876

ответ

3

Проблема была у меня была куча неназванных ui-просмотров на этом уровне. Поскольку контроллер вызывается ui-view, он загружается несколько раз.

Te решение должно называть виды и вызывать их с помощью ui-view = "viewName".

+0

Как вам удалось загрузить партитуры в settings.html? Я получаю пустые страницы, если объявляю по умолчанию ui-view = "defaultName" – Nirri

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