我如何在angularjs中的2个独立控制器中运行函数

时间:2016-12-12 17:30:50

标签: javascript angularjs javascript-events angularjs-events

我有2个独立的angularjs控制器

命名为HomeController和SearchController

我在HomeController中有一个名为“Search()”的函数

如何从searchController运行搜索功能?

2 个答案:

答案 0 :(得分:1)

定义'搜索'在工厂中运行,将该工厂注入两个控制器,然后您可以访问'搜索'来自两个控制器的功能。

样品:

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');
    };
  };
});

答案 1 :(得分:1)

我做了这个Plunker,它完成了上述工作。 app.js文件看起来像这样。它使用工厂声明。或者,如果您只是希望此函数存储并返回一些数据,那么您可以使用角度的$ rootScope服务,它可以全局访问。服务在执行某些操作时是首选。看看这个Link,它有解释服务与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
});