0

这个控制器工作得很好:

function airlineRouter($routeProvider) {
    $routeProvider
        .when('/',
            {
                templateUrl:"partials/destinations.html",
                controller: function($scope) {
                    $scope.setActive('destinations');
                } //end controller
         });
} //end airlineRouter

当我将控制器设为自己的 JS 文件时,它不再工作了。像这样:

function airlineRouter($routeProvider) {
    $routeProvider
        when('/',
            {
                templateUrl:"partials/destinations.html",
                controller: "DestinationsCtrl"
            });
} //end airlineRouter

我的控制器文件位于“root/js/controllers/destinations.js”中,这与我的“app.js”文件所在的文件夹相同。完整的“app.js”文件如下所示:

 angular
    .module('airline', ['ngRoute'])
    .config(airlineRouter);

function airlineRouter($routeProvider) {
    $routeProvider
        .when('/',
            {
                templateUrl:"partials/destinations.html",
                controller: "DestinationsCtrl"
            }
        );
} //end airlineRouter

我完整的控制器 JS 文件如下所示:

function DestinationsCtrl($scope) {
    $scope.setActive('destinations');
} //end DestinationsCtrl

为什么我的控制器不会像我正在做的这个 tut 所说的那样按函数名称加载?tut 的文件似乎有效。我的不是。

编辑:控制台日志显示:错误:[ng:areq] Argument 'DestinationsCtrl' is not a function, got undefined

编辑 2:我正在研究的 tut 被称为“嵌套范围”,如果这能让任何人更好地了解我正在尝试做什么。

4

2 回答 2

1

好的,就像我说的,我是 AngularJS 的新手,我有点白痴。我没有将我的外部 JS 脚本链接<head>放在我的 index.html 文件中。而已。我不敢相信我忽略了这一点。

于 2013-10-30T16:53:43.283 回答
0

尝试更改您的控制器声明:

angular.module('airline')
       .controller('DestinationsCtrl',function($scope){
         $scope.setActive('destinations');
       });

然后这个控制器将按预期工作。

希望这对你有帮助。

于 2013-10-30T02:46:59.533 回答