javascript - AngularJS - ' Controller 不是函数 : Seperate controller files

标签 javascript angularjs module

我在我的应用程序中收到“ Controller 不是函数”错误。

据我所知,最常见的问题是 html 页面中未引用 Controller 文件 - 我不是这种情况。

当我将 Controller 包含在与声明模块相同的文件中时,我没有收到错误,但是当我为每个 Controller 使用单独的文件时。

这是我的文件夹结构:

app.js:

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

myApp.config(function ($routeProvider) {
    $routeProvider.when('/', {
        templateUrl: 'assets/views/mainView.html',
        controller: 'assets/controllers/mainController.js'
    });
});

ma​​inController.js

var myApp = angular.module('myApp');

myApp.controller('mainController', ['$scope', function($scope){
    $scope.name = "test";
}]);

我还读到,当你声明一个模块时,数组大括号 [] 创建一个新模块,所以我在 mainController.js 中将它们从模块中取出。

如果我这样做,它会起作用:

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

myApp.config(function ($routeProvider) {
    $routeProvider.when('/', {
        templateUrl: 'assets/views/mainView.html',
        controller: 'mainController.js'
    });
});


myApp.controller('mainController', ['$scope', function($scope){
    $scope.name = "hi";
}]);

我在 head 部分的 index.html 中引用了这样的 Controller :

<script src="assets/scripts/js/app.js"></script>
<script src="assets/controllers/mainController.js"></script>

最佳答案

当你在另一个文件中有 Controller 时,不需要给出你在配置中给出的 Controller 路径

    myApp.config(function ($routeProvider) {
$routeProvider.when('/', {
    templateUrl: 'assets/views/mainView.html',
     //Remove this
    //controller: 'assets/controllers/mainController.js'
     //and then try this
       controller: 'mainController'
   });
});

关于javascript - AngularJS - ' Controller 不是函数 : Seperate controller files,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35935666/

相关文章:

javascript - AngularJS ngoptions 下拉菜单

javascript - 如何使用 highcharts 在 x 轴上创建中断?

javascript - 处理 AngularJS 中的许多解析

module - 如何重新加载 Python3 C 扩展模块?

python - 导入方式及其优点

javascript - javascript 中的自定义数组 block

javascript - Vue.js 给出带有观察者数据的奇怪对象

javascript - Breeze 实体查询是否仍支持 withParameters?

javascript - 图像不会通过 ng-repeat 中的函数显示在我的页面上

interface - OCaml 类型声明中的冗余 (ml/mli)