2014-01-28 6 views
4

У меня есть материал, который нужно выполнить только один раз, когда контроллер загружен. Каков наилучший способ этого? Я кое-что прочитал о «блоке запуска», но я действительно не понимаю, как это работает.Запуск один раз при загрузке контроллера AngularJS

Некоторые псевдо-код:

when /app 
resolove some stuff 
load a view 
controllerA 

ControllerA: 

Some-magic-piece-of-code-only-run-once{ 
} 

Может кто-нибудь мне точку в правильном направлении?

+1

код вы кладете в контроллере запускать только один раз, когда контроллер загружен. Что именно ты имеешь ввиду? Что вы пробовали? Поместите некоторый код. –

ответ

1

Просто делайте это нормально, контроллеры - это просто функции, вводимые с помощью $ scope, services. Когда контроллер загружен, эта функция вызывается только один раз. Вы можете сделать что-нибудь в нем.

app.controller("yourController",function($scope, myService){ 
    //Write your logic here. 


    //Initialize your scope as normal 
}); 
+0

Ах. Это было легко. Иногда вы делаете вещи более сложными, чем они. Спасибо! – Per

+1

Как @meilke предположил, что ng-init - лучшая практика. –

+2

@ Satyajitsinh Raijada: Я так не думаю, так же как и угловая официальная страница: «Единственное подходящее использование ngInit - для сглаживания специальных свойств ngRepeat': https://docs.angularjs.org/api/ng/directive/ ngInit –

11

Я всегда использую ngInit.

HTML:

<div ng-controller="AppController" ng-init="init()"/> 

JS:

$scope.init = function() { 
    // do something 
}; 

код, указанный в вашей функции контроллера выполняется только один раз, тоже:

var AppController = function($scope) { 
    // do something very early 

    $scope.init = function() { 
    // do something on loaded 
    }; 

}; 
+0

Это должен быть правильный ответ. ng-init вызывается один раз независимо от того, сколько раз директива получает повторную визуализацию –

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