错误:[$ injector:nomod]模块不可用

时间:2015-04-09 12:24:52

标签: javascript angularjs

我正在尝试使用进度条上传文件,但无论我做什么都会不断收到2个错误

1)模块未定义,第2个是[$ injector:nomod]模块不可用。

http://jsfiddle.net/3m75wqt1/

这是我的控制器

PageController.js

var PageController = function ($scope, fileUpload ) {
angular.module('app', ['ngProgress'])
angular.module('app')
.controller('PageController', function ($scope) {
    //$scope.fileUpload = {};
});
PageController.$inject = ['$scope','ngProgress'];

};

我做了很多搜索,但无法找到错误。 任何帮助将不胜感激...提前致谢

1 个答案:

答案 0 :(得分:2)

首先,所有模块方法都不应该在控制器内部调用,所以这个:

var PageController = function ($scope, fileUpload) {
    angular.module('app', ['ngProgress'])
    angular.module('app')
        .controller('PageController', function ($scope) {//I will replace this with PageController 
            //$scope.fileUpload = {};
        });
    PageController.$inject = ['$scope', 'ngProgress'];
};

看起来更像是这样:

var PageController = function ($scope, fileUpload) {
};
PageController.$inject = ['$scope', 'ngProgress'];
angular.module('app', ['ngProgress'])
angular.module('app').controller('PageController', PageController);

我删除了控制器方法中的函数,并将定义的PageController放在其位置

第二件事是你不需要两次调用模块方法,第一个已经返回模块,所以最好的方法应该是这样的:

var PageController = function ($scope, fileUpload) {
};
PageController.$inject = ['$scope', 'ngProgress'];
angular.module('app', ['ngProgress']).controller('PageController', PageController);

我个人喜欢数组符号,所以我最喜欢的就是这样,但这取决于你:

angular.module('app', [
    'ngProgress'//this is a module dependency (its also createt with angular.module)
]).controller('PageController', [
    '$scope',
    'fileUpload',//this is a dependency for the controller (probably a service)
    function ($scope, fileUpload) {
    }
]);