我的问题是如何在其他控制器中注入控制器?
这是我的第一个控制人员:
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
任何想法都可以!!!
答案 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>