我如何在angularJs中注入另一个控制器

时间:2017-02-10 10:29:59

标签: angularjs

我的问题是如何在其他控制器中注入控制器?

这是我的第一个控制人员:

define([ 'module', '{angular}/angular' ], function(module, angular) {
'use strict';

var listAnimcom = angular.module('listAnimcom', []);

listAnimcom.controller('listAnimcomCtrl', [ '$scope', 
        function($scope) {
        $scope.testAnimcom="this controller is called";           
        } ]);

return {
         angularModules : [ 'listAnimcom' ]
       };
});

这是我的第二个控制器,我想注入第一个:

define([ 'module', '{angular}/angular',
     '{animcom}/modules/controllers/listAnimcom',
      ], function(module, angular) {
'use strict';

var plateformeDeTest = angular.module('plateformeDeTest', ['listAnimcom']);

plateformeDeTest.controller('plateformeDeTestCtrl', [ '$scope','listAnimcomCtrl',
        function($scope,listAnimcomCtrl) {
   $scope.typeActivite="polcom";
   $scope.typeClient="plateforme";

        } ]);

return {
        angularModules : [ 'plateformeDeTest' ]
       };
});

但它给了我这个错误:

 angular.js:12798 Error: [$injector:unpr] http://errors.angularjs.org/1.4.12/$injector/unpr?p0=listAnimcomCtrlProvider%20%3C-%20listAnimcomCtr... 
  at angular.js:38 

任何想法都可以!!!

1 个答案:

答案 0 :(得分:1)

无法将一个控制器注入另一个控制器。

要在控制器之间共享数据,请考虑使用 factory/service

最好通过这个答案来更好地理解sharing data among controllers

使用工厂的示例

var app = angular.module("clientApp", [])
 app.controller("TestCtrl", 
   function($scope,names) {
     $scope.names =[];
    $scope.save= function(){
      names.add($scope.name);
    } 
    
  });
 app.controller("TestCtrl2", 
   function($scope,names) {
    $scope.getnames = function(){
     $scope.names = names.get();
   }
});
   
app.factory('names', function(){
  var names = {};
  names.list = [];
  names.add = function(message){
    names.list.push({message});
  };  
  names.get = function(){
    return names.list;
  };
  return names;
});
<!doctype html>
<html >

<head>
  <script src="//ajax.googleapis.com/ajax/libs/angularjs/1.5.8/angular.min.js"></script>
  <script src="script.js"></script>
</head>

<body ng-app="clientApp">
  <div ng-controller="TestCtrl">
    <input type="text" ng-model="name">
    <button ng-click="save()" > save</button>
    
  </div>
  
  <div ng-init="getnames()" ng-controller="TestCtrl2">
     <div  ng-repeat="name in names">
       {{name}}
       </div>
     
  </div>
</body>

</html>