0

У меня есть модуль так:функция нг-инициализации называется 1000+ раз

angular.module('BlurAdmin.pages.calendar', []) 
    .config(routeConfig); 

/** @ngInject */ 
function routeConfig($stateProvider, $urlRouterProvider) { 
    $stateProvider 
     .state('calendar', { 
      url: '/calendar', 
      templateUrl : 'http://localhost:8080/gestionprojet/dashboardCalendar', 
      title: 'Calendrier' 
     }) 


} 

И в директиву:

angular.module('BlurAdmin.pages.dashboard') 
     .directive('dashboardCalendar', dashboardCalendar); 

    /** @ngInject */ 
    function dashboardCalendar() { 
    return { 
     restrict: 'E', 
     controller: 'DashboardCalendarCtrl', 
     templateUrl: 'http://localhost:8080/gestionprojet/dashboardCalendar' 
    }; 
    } 

И в контроллер:

angular.module('BlurAdmin.pages.dashboard') 
      .controller('DashboardCalendarCtrl', DashboardCalendarCtrl); 

     /** @ngInject */ 
     function DashboardCalendarCtrl(baConfig, $uibModal, $scope, eventFactory) { 
      /** 
* Get Events 
*/ 
$scope.getEvents = function() { 
    eventFactory.getEvents() 
     .success(function (data) { 
     $scope.userEvents = data; 
     $scope.userEvents = $scope.renderEventJSonToFullCalendar($scope.userEvents); 
     }) 
     .error(function (data, status) { 
     console.log("fail : " + data); 
     $scope.errorMessage = "Erreur lors du chargement des évènements : " + data + ' ' + status; 
     }) 
}; 
} 

И В частичных страницах я инициализировать функцию в моем контроллере с:

<div ng-init="getEvents()"> 
    <dashboard-calendar> 
    <div id='calendar' class="blurCalendar"></div> 
    </dashboard-calendar> 
</div> 

Здесь функция вызывалась в 1000 раз и подсчет, даже если я не загружая страницу директивы ...

В чем проблема, потому что я не вижу ее. Спасибо

+0

где находится ваш 'GetEvents)' функция (? – CraigR8806

+1

Если вы установите контрольную точку в 'getEvents', вы можете посмотреть на свою трассировку стека, чтобы узнать, что ее вызывает. – adamdport

+0

@ CraigR8806 в моем контроллере, я добавил его –

ответ

0

Проблема в том, я ставлю тот же шаблон для состояния и директивы

0

Вместо того чтобы использовать ng-init, вы должны использовать resolve в определениях состояния:

$stateProvider 
    .state('calendar', { 
     url: '/calendar', 
     templateUrl : 'http://localhost:8080/gestionprojet/dashboardCalendar', 
     title: 'Calendrier', 
     resolve: { 
     myEvents: function(eventFactory){ 
     return eventFactory.getEvents(); 
     } 
     } 
    }) 

myEvents будет доступен в вашем контроллере, как зависимость.

+0

спасибо за подсказку, но это не решение –

+0

Есть миллион способов заставить что-то работать, но только несколько * хороших * способов. Никакие опытные угловые разработчики никогда не предложили бы загружать данные через ваши шаблоны. Независимо от того, рад, что вы заработали! – adamdport

+0

Вы имеете в виду только 'разрешение', или я делаю все это неправильно? –

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