Angularjs 单独文件中的控制器抛出错误

Angularjs 单独文件中的控制器抛出错误,angularjs,Angularjs,我正在将我的控制器从包含整个应用程序的唯一文件移动到单独的文件,并收到错误:“错误:[ng:areq]参数'MainCtrl'不是函数,未定义” 我使用设置方法在app.js中定义我的应用程序: var app = angular.module('CMT', ['ui.router', 'angularCharts', 'uiSwitch']); 然后,我创建了一个文件MainCtrl.js,其中包含: angular.module('CMT').controller('MainCtr

我正在将我的控制器从包含整个应用程序的唯一文件移动到单独的文件,并收到错误:“错误:[ng:areq]参数'MainCtrl'不是函数,未定义”

我使用设置方法在app.js中定义我的应用程序:

var app = angular.module('CMT', ['ui.router', 'angularCharts', 'uiSwitch']);
然后,我创建了一个文件MainCtrl.js,其中包含:

    angular.module('CMT').controller('MainCtrl', [
'$scope', 'reviews', '$location',
function($scope, reviews, $location){

}]);
在包含angular源代码后,我将这些文件包括在index.html中:

<script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.3.10/angular.js"></script>
<script src="http://cdnjs.cloudflare.com/ajax/libs/angular-ui-router/0.2.10/angular-ui-router.js"></script>
<script src='library/d3.min.js' type='text/javascript'></script>
<script src='library/angular-charts.min.js' type='text/javascript'></script>
<script src="node_modules/angular-ui-switch/angular-ui-switch.min.js"></script>

<script src="app.js" type='text/javascript'></script>
<script src="MainCtrl.js" type='text/javascript'></script>


任何提示或解决方案?

app.js文件之前指定所有服务/控制器/过滤器/指令文件

<script src="MainCtrl.js" type='text/javascript'></script>
<script src="app.js" type='text/javascript'></script>

注意:如果将所有脚本文件捆绑到单个文件中,则无需关心这些文件顺序

请尝试以下操作:

在你的
app.js
中,插入你的
MainCtrl.js
,如:

var app = angular.module('CMT', ['ui.router', 'angularCharts', 'uiSwitch', 'CMT.MainCtrl']);
在您的
MainCtrl.js
中:

angular.module('CMT.MainCtrl', [])
编辑:

容器是一个容器。在每个Angularjs应用程序中,都有一个“主”模块,通常还有许多子模块。这些子模块有助于将应用程序模块化/分离为组件,如控制器、服务等。最初,您有一个主模块,其中还包含控制器的代码。当您决定将控制器移出主模块时,您要做的是将其移动到子模块中

因此,你所做的有两个问题:

  • 您将控制器模块(在本例中是您的子模块)命名为与应用程序/主模块相同的名称
    'CMT'
    。您的子模块需要有唯一的名称,最好使用
    分隔符-参见此

  • 您没有以角度方式将控制器模块“链接”到应用程序模块。仅仅将脚本添加到html中是不够的。如果您有一个名为
    CMT.MainCtrl
    的子模块,则需要将其插入主
    CMT
    模块中


  • 根据您的命名约定
    MainCtrl.js
    与类似于
    controllers.js
    的东西相比,我猜您是在按功能而不是按类型组织代码?在任何情况下,请阅读更多有关角度目录结构的信息。

    我按照您的说明进行了操作。在我的应用程序模块中添加了对新模块的依赖关系,并将控制器“MainCtrl”附加到新模块“CMT.MainCtrl”上,它可以正常工作。你能解释一下为什么这是有效的,我以前做过什么没有?嗨,这引起了另一个错误,并没有解决我的问题。谢谢您抽出时间:)