Javascript 我无法识别我的控制器

Javascript 我无法识别我的控制器,javascript,angularjs,Javascript,Angularjs,我有一个项目,其中homeapp.js包含angular.module依赖项: var HomeApp = angular.module('HomeApp', [ 'ngRoute', 'ngCookies', 'HomeControllers', 'metadataControllers', 'MyControl

我有一个项目,其中homeapp.js包含angular.module依赖项:

var HomeApp = angular.module('HomeApp', [
                'ngRoute',
                'ngCookies',
                    'HomeControllers',
                    'metadataControllers',
                    'MyControllers',
                    'ScheduleControllers'
                ]);

HomeApp.config(['$routeProvider',
                function($routeProvider) {
                  $routeProvider.
                    when('/schedules', {
                        templateUrl: 'pages/list_schedule.html',
                        controller: 'ScheduleControllers'
                    });
在ScheduleController.js中,我有:

angular.module('ScheduleControllers', []).controller('PhoneListCrl', function($scope) {
    $scope.phones = [
        {'name': 'Nexus S',
        'snippet': 'Fast just got faster with Nexus S.'},
        {'name': 'Motorola XOOM with Wi-Fi',
        'snippet': 'The Next, Next Generation tablet.'},
        {'name': 'MOTOROLA XOOM',
        'snippet': 'The Next, Next Generation tablet.'}
    ];
});
这基本上是angular教程中的代码片段

在index.html中,我有:

<html lang="en-CA" ng-app="HomeApp">
...
<li id="id_schedule_list" class="header_list"><a href="#schedules" class="link_without_underline">List Schedule</a></li>
...
这对我来说没什么意义,但我想这是说ScheduleControllers没有定义

编辑: 在angluar的教程中,app.js说:

var phonecatApp = angular.module('phonecatApp', [
'ngRoute',
'phonecatAnimations',
'phonecatControllers',
'phonecatFilters',
'phonecatServices'
]);
然后在controllers.js中,它有:

var phonecatControllers = angular.module('phonecatControllers', []);
phonecatControllers.controller('PhoneListCtrl', ['$scope', 'Phone',
function($scope, Phone) {
$scope.phones = Phone.query();
$scope.orderProp = 'age';
}]);

看起来我几乎完全按照教程所做的做了,但为什么它对我不起作用?

您正在将控制器连接到另一个角度模块:

// This line creates a new module named "ScheduleControllers"
// And attaches the "PhoneListCrl" to it.
angular.module('ScheduleControllers', []).controller('PhoneListCrl', function() { ... });
如果您希望它对您的
HomeApp
可见,请将其连接到该模块:

// You need to attach "PhoneListCrl" to your original module.
angular.module('HomeApp').controller('PhoneListCrl', function() { ... });

您正在将控制器连接到另一个角度模块:

// This line creates a new module named "ScheduleControllers"
// And attaches the "PhoneListCrl" to it.
angular.module('ScheduleControllers', []).controller('PhoneListCrl', function() { ... });
如果您希望它对您的
HomeApp
可见,请将其连接到该模块:

// You need to attach "PhoneListCrl" to your original module.
angular.module('HomeApp').controller('PhoneListCrl', function() { ... });

问题其实出在路线上。您正在为控制器使用模块的名称,而不是实际的控制器名称

如果您有
控制器:“ScheduleControllers”
,则需要
控制器:“PhoneListCtrl”
。此外,粘贴的代码在控制器定义中有输入错误。您需要在PhoneListCtrl中输入一个t

angular.module('ScheduleControllers', []).controller('PhoneListCtrl',     function($scope) ` 
编辑

在下面的代码中,您将告诉angular在访问/schedules路由时要加载哪个控制器。现在,它指向“ScheduleControllers”,它是一个模块,而不是控制器。把它改成与第二个街区相匹配,你就可以出发了

HomeApp.config(['$routeProvider',
            function($routeProvider) {
              $routeProvider.
                when('/schedules', {
                    templateUrl: 'pages/list_schedule.html',
                    controller: 'ScheduleControllers'
                });

HomeApp.config(['$routeProvider',
            function($routeProvider) {
              $routeProvider.
                when('/schedules', {
                    templateUrl: 'pages/list_schedule.html',
                    controller: 'PhoneListCtrl'
                });

请参阅以获取参考。

问题实际上在于路线。您正在为控制器使用模块的名称,而不是实际的控制器名称

如果您有
控制器:“ScheduleControllers”
,则需要
控制器:“PhoneListCtrl”
。此外,粘贴的代码在控制器定义中有输入错误。您需要在PhoneListCtrl中输入一个t

angular.module('ScheduleControllers', []).controller('PhoneListCtrl',     function($scope) ` 
编辑

在下面的代码中,您将告诉angular在访问/schedules路由时要加载哪个控制器。现在,它指向“ScheduleControllers”,它是一个模块,而不是控制器。把它改成与第二个街区相匹配,你就可以出发了

HomeApp.config(['$routeProvider',
            function($routeProvider) {
              $routeProvider.
                when('/schedules', {
                    templateUrl: 'pages/list_schedule.html',
                    controller: 'ScheduleControllers'
                });

HomeApp.config(['$routeProvider',
            function($routeProvider) {
              $routeProvider.
                when('/schedules', {
                    templateUrl: 'pages/list_schedule.html',
                    controller: 'PhoneListCtrl'
                });

请参阅以供参考。

控制器:
ScheduleControllers'
是模块的名称而不是控制器,因此问题控制器:
是模块的名称而不是控制器,因此问题谢谢回答。我已经编辑了这篇文章。我不确定当我试图学习角度教程时会出什么问题……谢谢你的回答。我已经编辑了操作。我不确定当我试图遵循角度教程时会出现什么问题…从教程中复制的零件不包括路线注册,这就是问题所在。控制器和依赖项加载正确,只需修改路由注册。我将对上面的回答进行编辑,使其更加明确。您从教程中复制的部分不包括路线注册,这正是您的问题所在。控制器和依赖项加载正确,只需修改路由注册。我将编辑上面的回复,使其更加明确。