我想在我的应用程序中包含几个第三方Angular模块。以前我只创建了简单的应用程序,我只是使用ng-app来引导程序并将我的代码放在控制器中。
根据我的理解,我的html中应该有这样的东西:
<html ng-app"myApp">
然后我的JS应该是这样的:
angular.module('myApp',['thirdPartyModule1','thirdPartyModule2']);
var myCtrl = function($scope, myApp, $http){
//my stuff
};
但是当我这样做时,我收到一个错误:
Error: Unknown provider: myAppProvider <- myApp
答案 0 :(得分:9)
您无需将myApp注入控制器。你的控制器应该这样定义:
angular.module('myApp',['thirdPartyModule1','thirdPartyModule2']);
var myCtrl = function($scope, $http){
//my stuff
});
使它更“标准”:
var myApp = angular.module('myApp',['thirdPartyModule1','thirdPartyModule2']);
myApp.controller('myCtrl', function($scope, $http){
//my stuff
});
这样,如果您愿意,可以引用您的应用。
现在让它与minifiers / beautifiers / closure编译器兼容:
var myApp = angular.module('myApp',['thirdPartyModule1','thirdPartyModule2']);
myApp.controller('myCtrl', ['$scope','$http', function($scope, $http){
//my stuff
}]);
这基本上使控制器参数成为一个数组,其中数组的第一个成员就是你要注入的数组。这是因为缩小器会将参数转换为随机字母,如function(a,b)
,而angular将不知道你要注入的是什么。通过在数组中传递字符串,你将被缩小,就像['$scope','$http', function(a,b)]
一样,这很好,因为数组中的前两个参数告诉angular要注入什么。