错误:[ng:areq] Argument' ControllerName'不是一个功能,未定义

时间:2016-03-21 20:01:49

标签: javascript angularjs angularjs-controller

app.js我有:

(function(){
    var app = angular.module("myApp", []);
})();
<{1>}中包含 process.js之后的

我有:

app.js

在我的(function(){ app.controller('ProcessController', ['$http', function($http){ this.something = "Test" }]); }); 文件中,我有HTML

div

这在我的控制台中抛出错误:

<html class="no-js" lang="en" ng-app="myApp">
...
   <div class="row" ng-controller="ProcessController">

我对角度很新,从未使用过像这样的多个文件。我做错了什么?

4 个答案:

答案 0 :(得分:5)

在其他JS文件中使用angular.module("myApp")&amp;不要忘记调用具有IIFE pattern意义的功能,这将有助于您使ProcessController控制器可用。

<强>代码

(function(){
  angular.module("myApp")
    .controller('ProcessController', ['$http', function($http){
        this.something = "Test"
    }]);
})(); //<-- () function should get called to self execute it.

答案 1 :(得分:2)

将您的process.js更改为:

(function(){
    var app = angular.module("myApp");
    app.controller('ProcessController', ['$http', function($http){
        this.something = "Test"
    }]);
})();

另请考虑使用语法ng-controller="ProcessController as process",以便在模板this.something之后访问{{ process.something }}变量。

答案 2 :(得分:1)

位于app.js的顶部

var app = angular.module('myApp', ['myApp.controllers']);

在processor.js的顶部

var app = angular.module('myApp.controllers', []);

答案 3 :(得分:0)

&#39;使用严格的&#39; ;定义JavaScript代码应该在&#34; strict模式&#34;中执行。 所以它首先需要声明然后定义。因此,如果您已在app.js&amp;中声明了该模块。将js添加到index.html但未注入mainApp模块,您有机会ngareq ControllerName不是函数或未定义。 希望如此有用。