Как я могу запустить функцию в 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');
    };
  };
});
Другие вопросы по тегам