2013-07-23 6 views
4

У меня есть контроллер, на который ссылаются некоторые html. И html изменяется на какое-то событие, поэтому код функции контроллера выполняется несколько раз.
Проблема в том, что у меня есть мир кода, который нужно выполнить только один раз.
Вот контроллер:Как заставить функцию контроллера выполнять только один раз в AngularJS?

angular.module("someModule", [dependencies]) 
.controller("leftBoardController", function ($scope, someService) { 
    (function createFilter(dataService) { 
    // here I'm loading all the data on which I want to operate after 
      // this code should execute only once 
    })(TempEmployeeService); 
} 

Но он выполняет каждый раз, когда изменения HTML.
Это как вставляется контроллер:

<section ng-controller="TreeMapController" 
       ng-class="{ 'main-container-single': zoomed }" 
       class="minContainer main-container"> 

Вопросы:
1) Как сделать функцию контроллера выполнить только один раз?
2) Или есть способ, которым я могу написать этот мир кода, который будет выполняться только один раз?

+0

что вы имеете в виду изменения HTML ?? вы имеете в виду часть вашей страницы, как в разделе, упомянутом выше, изменения или изменение всей страницы – Atrix1987

+1

Я думаю, что вся страница. Я изменяю url в моем коде и изменениях html (страница не перезагружается) –

+0

если страница обновлена ​​/ загружена/загружена, контроллер будет вызван снова - это то, что ожидается – Atrix1987

ответ

3

Поместите свой код «запустить один раз» в service и верните обещание.

Внедрите это обслуживание в ваш контроллер.

Для примера сервис создания и затем возвращая обещание, а затем контроллер с помощью этого обещания см Should services expose their asynchronicity?

+0

Я сделал это с переменной массива, это для меня более понятно –

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