如何使用angularjs将一个控制器功能注入另一个控制器?

时间:2015-09-30 07:19:02

标签: javascript jquery angularjs

我有两个控制器,例如controller1,controller2,我想在controller1中注入controller2方法,我想通过我的JS API函数访问“document.querySelector('[ng-controller = custom-entity-design] -Ctrl]')”。   有可能得到吗?我尝试使用也不起作用的工厂服务。它说错误$ scope未定义。

源代码

**controller1**
  myApp.controller("controller1",function($scope, $document, $http, $localStorage) {
        $scope.test1 = function() {
              alert("test1");
         };
  });

  **controller2**
  myApp.controller("controller2",function($scope,$http,$compile,$localStorage, $log) {
        $scope.test2 = function() {
              alert("test2");
         };
  });

详细...我想从controller1访问$ scope.test2方法。

我尝试使用工厂也没有工作。

源代码:

  myApp.factory("testService", function($compile, $http, $scope) {     
   $scope.test2 = function() {
              alert("test2");
         };   
   }

   factory injected in controller1

   myApp.controller("controller1",['testService',function($scope, $document, $http, $localStorage) {
        $scope.test1 = function() {
              alert("test1");
         };
  }]);

任何人都可以帮助我实现这一目标。

1 个答案:

答案 0 :(得分:1)

您使用.factory()

走在正确的道路上
myApp.factory("testService", function($compile, $http, $scope) {     
   // just return the things in an object.
   return {
      name:"angular js",
      test2 : function(){ alert("test2") }
   }  
});

myApp.controller("controller1",['$scope', '$document', '$http', '$localStorage','testService', function($scope, $document, $http, $localStorage, testService) {
    $scope.test1 = function() {
        alert("test1");
        testService.test2(); // use the method from the testService.
    };
}]);

您在控制器的函数args中缺少服务,当您使用.factory()服务时,请确保返回对象{}中的所有内容,使用此对象可以提供多个值/方法等。

Check the plnkr.