2015-09-10 2 views
0

Можно ли подключить функцию, которая вызывается в любое время, когда контроллер загружается угловым?AngularJS: присоединить функцию к нагрузке контроллера

Я хотел бы повторить это:

(function (angular) { 

    angular.module("mymodule") 
    .controller("mycontroller", [ 

     function() { 
      console.info("mycontroller loaded"); 
     } 

    ]); 

})(angular); 

Так что console.info("mycontroller loaded"); линии выполняются автоматически, без необходимости вставить эту строку в каждом контроллере.

Есть ли какое-нибудь событие/провайдер, который я могу использовать для этого?

+0

написать прямо в контроллере без функции? – YOU

+0

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

+0

@JoeLloyd да, только, я не хочу повторять одну и ту же строку на каждом контроллере. Я просто размышлял, было ли событие или что-то еще, к чему я мог бы подключиться, чтобы добиться такого же результата, не забывая добавлять строку на каждом контроллере. – sh0uzama

ответ

0

Создание службы

Создание службы нагрузки и создать его экземпляр в каждом контроллере.

.service('loadService', function(){ 
    return{ 
    loaded: function() { 
     console.info("mycontroller loaded"); 
    } 
    } 
}) 

Теперь ваш контроллер может выглядеть следующим образом

.controller('myController', function(loadService){ 
    loadService.loaded(); 
    //the rest of your controller// 
}) 

Все функции вы хотели бы поделиться между контроллерами можно сделать с помощью сервиса или завода.

+0

Я не хочу повторять одну и ту же строку на каждом контроллере. Я просто размышлял, было ли событие или что-то еще, к чему я мог бы подключиться, чтобы добиться такого же результата, не забывая добавлять строку на каждом контроллере. – sh0uzama

+0

, если вы хотите, чтобы контроллер сделал что-то, что вам нужно сказать. это был бы самый чистый способ сделать это, я думаю, так как он преувеличивает ваш код и требует только добавить 2 слова. –

+0

Я думаю, что QO ищет что-то вроде перехватчиков. – Joy

0

вы можете использовать

$scope.$on('$locationChangeStart', function (ng_event, ng_newUrl, ng_oldUrl){ 

}); 

она вызывается каждый раз в контроллере, когда вы загрузите его.

(function (angular) { 

    angular.module("mymodule").controller("mycontroller", ['$scope', function ($scope) { 

    $scope.$on('$locationChangeStart', function (ng_event, ng_newUrl, ng_oldUrl){ 

    }); 

    }]); 

})(angular); 
Смежные вопросы