我不知道为什么会收到此错误。 我得到的错误是错误:[ng:areq]参数'PreviewController'不是函数,未定义。 有人可以帮我解决这个问题吗? 还有其他方法可以在控制器中注入服务吗?
我的代码如下:
(function() {
'use strict';
angular
.module('MyModule')
.controller('PreviewController' ['$scope','Service1','Service2',
function($scope, $http) {
$http.get("https://api.myjson.com/bins/30e2a")
.success(function(response) {
//Dummy data taken from JSON file
$scope.firstName = response.firstName;
$scope.lastName = response.lastName;
$scope.dateAdded = response.dateAdded;
});
//Functions have been defined. Functionality to be added.
$scope.cancelAndBack = function() {
window.history.back();
};
}]);
}());
答案 0 :(得分:0)
您正在错误地定义模块。
`angular.module('MyModule')`
正在寻找一个名为' MyModule'的已经初始化的模块。 如果从头开始创建模块,则需要清空数组。这将是更多的模块依赖。
`angular.module('MyModule', [])`
这就是角度如何知道它们之间的区别,'创建应用程序'并且“给我一个应用程序'。
终于服务了。你使用的角度数组符号。这样你就可以缩小你的javascript。
angularjs注入系统按名称工作,它是如何找到您需要的依赖项,这也是您可以按照自己喜欢的顺序列出它们的原因。但是,缩小代码会更改变量名称,从而打破角度注入。
解决方案是提供一个字符串数组,告诉您希望注入的服务以及它们被注入的顺序。
因此,传递给控制器函数的数组值和属性必须匹配。
正确:
.controller('test', ["$scope", "$http", "myService", function( $scope, $http, myService){}]);
不正确:(myService
不会被定义为数组中的遗漏)
.controller('test', ["$scope", "$http", function( $scope, $http, myService){}]);