如何在angularjs中运行两个分离的控制器中的函数?

17 浏览
0 Comments

如何在angularjs中运行两个分离的控制器中的函数?

我有两个分离的angularjs控制器,它们分别命名为HomeControllerSearchController

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

我该如何从SearchController运行搜索函数?

0
0 Comments

在AngularJS中,如果想要在两个分离的控制器中运行同一个函数,可以通过以下步骤来实现。

首先,在一个工厂(factory)中定义一个名为"search"的函数。然后,将这个工厂注入(inject)到两个控制器中,这样就可以从两个控制器中访问到这个"search"函数。

下面是一个示例代码:

app.controller('HomeController', function(searchFactory){
   //调用工厂中的函数
   searchFactory.search();
});
app.controller('searchController ', function(searchFactory){
   //调用工厂中的函数
   searchFactory.search();
});
app.factory('searchFactory', function(){
  return{
    search: function(arg){
      alert('hello world');
    }
  };
});

通过上述代码,我们定义了一个名为"searchFactory"的工厂,在其中返回一个包含"search"函数的对象。然后,在两个控制器中,我们注入了这个工厂,并通过调用"searchFactory.search()"来运行"search"函数。

这样,无论是在"HomeController"中调用"searchFactory.search()",还是在"searchController"中调用"searchFactory.search()",都会弹出一个显示"hello world"的提示框。

通过这种方式,我们可以在两个分离的控制器中运行同一个函数,实现代码的复用和逻辑的统一。

0
0 Comments

问题的原因是想要在两个独立的控制器中运行一个函数。解决方法是将这个函数提取出来,通过一个服务或者共享作用域或者根作用域来共享它。这是标准的做法,可以使代码可重用并减少冗余。

在上述代码中,app.js文件定义了两个控制器:HomeCtrl和SearchCtrl,它们都依赖于searchService服务。这两个控制器分别有一个函数ctrl1Fun和ctrl2Fun,它们都调用了searchService的search函数。

searchService是一个工厂函数,它定义了一个名为search的函数,该函数弹出一个"hello World"的提示框。searchService还定义了一个service对象,其中包含search函数。

想要在HomeController中运行这个函数,需要将该函数提取出来,并通过searchService来共享。这样,SearchCtrl也可以调用这个函数。

通过将函数提取出来并共享,可以实现在两个独立的控制器中运行同一个函数。这样可以避免重复编写相同的代码,提高代码的可重用性。

以上就是问题的原因以及解决方法。通过将函数提取出来并通过服务或者作用域共享,可以在两个独立的控制器中运行同一个函数,使代码更加可重用和简洁。

0