Как я могу запустить функцию в 2 отдельных контроллера в Angularjs
У меня есть 2 отдельных контроллера angularjs
который назвал HomeController и SearchController
у меня есть функция с именем "Поиск ()" в HomeController
Как я могу запустить функцию поиска из searchController?
2 ответа
Я сделал этот Plunker, который делает выше. Файл app.js выглядит следующим образом. Используется заводская декларация. В качестве альтернативы, если вы просто хотите, чтобы эта функция сохраняла и возвращала некоторые данные, вы можете использовать службу $ rootScope для angular, она доступна глобально. Услуги предпочтительнее, когда они выполняют какую-либо операцию. Взгляните на эту ссылку, в которой есть ответы, объясняющие использование служб против rootScope.
app.controller('HomeCtrl', function($scope, searchService) {
$scope.ctrl1Fun= function() {
searchService.search();
}
});
app.controller('SearchCtrl', function($scope, searchService) {
$scope.ctrl2Fun= function() {
searchService.search();
}
})
app.factory('searchService', function(){
function search(){
alert('hello World')
}
var service = {search : search}
return service
});
Определите функцию "поиск" на фабрике, введите эту фабрику в оба контроллера, после чего вы сможете получить доступ к функции "поиск" с обоих контроллеров.
образец:
app.controller('HomeController', function(searchFactory){
//calling factory function
//searchFactory.search();
});
app.controller('searchController ', function(searchFactory){
//calling factory function
//searchFactory.search();
});
app.factory('searchFacotry', function(){
return{
search: function(arg){
alert('hello world');
};
};
});