错误:[ng:areq]参数'PreviewController'不是函数,未定义

时间:2015-10-19 15:40:32

标签: angularjs

我不知道为什么会收到此错误。 我得到的错误是错误:[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();
    };


}]);

}());

1 个答案:

答案 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){}]);