Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/369.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在angularjs中的两个独立控制器中运行函数_Javascript_Angularjs_Javascript Events_Angularjs Events - Fatal编程技术网

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

Javascript 如何在angularjs中的两个独立控制器中运行函数,javascript,angularjs,javascript-events,angularjs-events,Javascript,Angularjs,Javascript Events,Angularjs Events,我有两个独立的angularjs控制器 名为HomeController和SearchController的 我在HomeController中有一个名为“Search()”的函数 如何从searchController运行搜索功能?在工厂中定义“搜索”功能,将该工厂注入两个控制器,然后您可以从两个控制器访问“搜索”功能 样本: app.controller('HomeController', function(searchFactory){ //calling factory funct

我有两个独立的angularjs控制器

名为HomeController和SearchController的

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


如何从searchController运行搜索功能?

在工厂中定义“搜索”功能,将该工厂注入两个控制器,然后您可以从两个控制器访问“搜索”功能

样本:

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

在工厂中定义“搜索”功能,将该工厂注入两个控制器,然后您可以从两个控制器访问“搜索”功能

样本:

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');
    };
  };
});
我已经做了这个,做了上面的。app.js文件如下所示。它使用工厂声明。或者,如果您只希望此函数存储和返回一些数据,则可以使用angular的$rootScope服务,它是全局可访问的。服务在执行某些操作时优先使用。看看这篇文章,其中给出了解释服务与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.js文件如下所示。它使用工厂声明。或者,如果您只希望此函数存储和返回一些数据,则可以使用angular的$rootScope服务,它是全局可访问的。服务在执行某些操作时优先使用。看看这篇文章,其中给出了解释服务与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
});

我想要运行HomeControlleri中的函数如果您需要重用控制器中编写的函数,您应该将该函数取出并通过服务使其可用,或者通过共享作用域或根作用域共享它。这是标准做法,它使您的代码可重用且冗余更少。我希望运行HomeControlleri中的函数如果您需要重用控制器中编写的函数,您应该将该函数取出,并通过服务使其可用,或通过共享作用域或根作用域共享它。这是标准实践,它使您的代码可重用,减少冗余。