Javascript 参数不是函数-AngularJS未定义
我是Angular的新手,目前我正在尝试构建一些非常简单的东西,但我有一个问题,我被卡住了,我不明白为什么会发生这种情况 我有一个在Webstorm与Express和npm的小项目。角度是作为依赖项添加的,版本1.5.3。我还使用Jade作为模板语言。这是我在普朗克的东西 下面还列出了:Javascript 参数不是函数-AngularJS未定义,javascript,angularjs,Javascript,Angularjs,我是Angular的新手,目前我正在尝试构建一些非常简单的东西,但我有一个问题,我被卡住了,我不明白为什么会发生这种情况 我有一个在Webstorm与Express和npm的小项目。角度是作为依赖项添加的,版本1.5.3。我还使用Jade作为模板语言。这是我在普朗克的东西 下面还列出了: doctype html html(lang='en', ng-app='courses') head meta(charset='utf-8') meta(name='viewport', c
doctype html
html(lang='en', ng-app='courses')
head
meta(charset='utf-8')
meta(name='viewport', content='width=device-width, initial-scale=1, user-scalable=no')
script(src='/node_modules/angular/angular.js')
script(src='/node_modules/angular-resource/angular-resource.js')
script(src='/node_modules/angular-route/angular-route.js')
script(src='/javascripts/app.js')
script(src='/javascripts/controllers.js')
script(src='/javascripts/services.js')
title= title
link(rel='stylesheet', ref='//netdna.bootstrapcdn.com/bootstrap/3.0.1/css/bootstrap.min.css')
link(rel='stylesheet', href='/stylesheets/style.css')
body(ng-controller='CoursesListController')
nav.navbar.navbar-inverse.navbar-fixed-top(role='navigation')
div.navbar-header
a.navbar-brand(href='#/courses')=title
div.container
div(ng-view)
我的app.js:
angular.module('courses', ['ngRoute'])
.config(['$routeProvider', function ($routeProvider) {
$routeProvider
.when('/courses', { templateUrl: 'partials/list.html', controller: CoursesListController })
.when('/course/:courseId', { templateUrl: 'partials/item.html', controller: CourseItemController })
.when('/new', { templateUrl: 'partials/new.html', controller: CourseCreateController })
.otherwise({ redirectTo: '/courses' });
}]);
My controllers.js
function CoursesListController($scope, $routeParams, Course) {
$scope.courses = Courses.query();
}
和my services.js:
angular.module('courseServices', ['ngResource']).factory('Course', function
($resource) {
return $resource('courses/:courseId', {}, {
query: {method: 'GET', params: {courseId: 'courses'}, isArray: true}
})
});
我得到的错误是:
angular.js:13294错误:[ng:areq]参数“CoursesListController”不是函数,未定义
我不知道为什么。此外,也许有些建议会有用你认为这样的结构/分离有意义吗 这是一个装载订单问题 基本上,您首先加载
app.js
,它尝试注册尚未加载的函数
要解决这个问题,只需将脚本(src='/javascripts/app.js')
移动到其他include下面
编辑:或者有一大堆替代方案来防止诸如RequireJS、Webpack、Grunt等问题。这是一个加载顺序问题 基本上,您首先加载
app.js
,它尝试注册尚未加载的函数
要解决这个问题,只需将脚本(src='/javascripts/app.js')
移动到其他include下面
编辑:或者有一大堆替代方案来防止诸如RequireJS、Webpack、Grunt等问题。您是否忘记在模块中注册控制器?这是重复使用的
.controller('myCtrl',['$scope',function($scope){…
?不,不是这样,我修正了输入错误。我看到了CourseSistController
的函数,但您实际上在哪里将其注册为模块?还有,这个:angular.module('courseServices',['ngResource'))
将创建一个新的应用程序模块,使courseServices
在courses
中不可用,除非您插入它。当然,修复控制器中的键入错误,并将app.js放在脚本加载顺序的底部。您忘了向模块注册控制器吗?这是重复使用控制器吗('myCtrl',['$scope',function($scope){…
?不,不是这样,我修正了输入错误。我看到了CourseListController
的函数,但是您实际在哪里将其注册为模块?还有,这个:angular.module('courseServices',['ngResource'))
将创建一个新的应用程序模块,使courseServices
在courses
中不可用,除非您插入它。当然,修复控制器中的输入错误,并将app.js放在脚本加载顺序的底部。此加载顺序问题是否特定于OP的框架实现?因为我一直有y.js脚本引用由app.js、services.js、controllers.js等进行排序,这不是问题。我认为,这里可能发生了其他事情,比如未能将courseServices
注入课程
以及未能将CoursesListController
注册为控制器模块(这可能是导致OP引用的特定错误的原因之一)。如果我没有弄错,就没有必要在模块上注册控制器,您也可以将控制器定义为命名函数或匿名函数。嗯,下面是一个说明问题的例子。您是说.controller('MyController',MyController')吗
不是必需的(在JSFIDLE中)?因为如果您留下注释,JSFIDLE示例不起作用,但是如果您取消注释它起作用。我缺少什么?在您的FIDLE中,您尝试按名称引用它。如果您这样做,您需要在控制器上注册它。在OP的示例中,他引用路由器上的函数本身config@Aides我放弃了,删除了我的答案,我看到了y我们的编辑,对您来说绝对是+1:)这个加载顺序问题是OP的框架实现特有的吗?因为我总是让app.js、services.js、controllers.js等对我的.js脚本引用进行排序,这不是一个问题。我想,可能还有其他事情发生在这里,比如未能将courseServices
注入课程以及无法将CoursesListController
注册为控制器模块(这可能是实际导致OP引用的特定错误的模块)。如果我没有弄错的话,就没有必要在模块上注册控制器,您也可以将控制器定义为命名函数或匿名函数。嗯,这里有一个例子说明了这个问题。您是说.controller('MyController',MyController)
不是必需的(在JSFIDLE中)?因为如果您留下注释,JSFIDLE示例不起作用,但是如果您取消注释它起作用。我缺少什么?在您的FIDLE中,您尝试按名称引用它。如果您这样做,您需要在控制器上注册它。在OP的示例中,他引用路由器上的函数本身config@Aides我放弃了,删除了我的答案,我看到了y我们的编辑,对您来说绝对是+1:)