Javascript ';未捕获类型错误:未定义不是函数';将控制器/服务放在单独的js文件中时
我正在尝试将我的控制器和服务(以前都在我的一个app.js文件中)分离到单独的js文件中。然而,我得到了一个Javascript ';未捕获类型错误:未定义不是函数';将控制器/服务放在单独的js文件中时,javascript,angularjs,angularjs-service,angularjs-factory,Javascript,Angularjs,Angularjs Service,Angularjs Factory,我正在尝试将我的控制器和服务(以前都在我的一个app.js文件中)分离到单独的js文件中。然而,我得到了一个未捕获的TypeError:undefined不是来自我的一个分离服务(authorInterceptorService,如下所示)的第一行的函数 以下是my app.js中的模块代码: var app = angular.module('AngularAuthApp', [ 'ngRoute', 'LocalStorageModule', 'angular-loa
未捕获的TypeError:undefined不是来自我的一个分离服务(authorInterceptorService,如下所示)的第一行的函数
以下是my app.js中的模块代码:
var app = angular.module('AngularAuthApp', [
'ngRoute',
'LocalStorageModule',
'angular-loading-bar'
]);
//some app.constants
这是我在一个单独的authorInterceptorService.js文件中的服务(未捕获的TypeError发生在第一行:
app.factory('authInterceptorService', [
'$q',
'$injector',
'$location',
'localStorageService',
function ($q, $injector, $location, localStorageService) {
//more code
return authInterceptorServiceFactory;
}
]);
我是否缺少一段正确的语法?我以为我遵循了中提供的示例。我还在html中引用这些单独的js文件。如果我在控制器或模块设置中缺少某些内容,或者我应该以其他方式执行,请告诉我
非常感谢您抽出时间。如果您需要其他信息或我不清楚,请告诉我。将authInterceptorService
放在您的app.js依赖项中
因此:
将authInterceptorService
放入app.js依赖项中
因此:
发件人:
模块
在“app.js”中定义和配置所有模块:这意味着authInterceptorService
angular.module('yourAppName', ['yourAppDep']);
angular.module('yourAppDep');
在如下模块上定义控制器、服务等:
angular.module('yourAppDep').controller('MyCtrl', function () {
// ...
});
虽然我们(AngularJS团队)我们已经讨论过能够在模块粒度上延迟加载,但它还没有出现在Angular下一版本的路线图上。Google+上有一个关于使用多个顶级AngularJS应用程序来产生类似延迟加载的效果的很好的讨论。我还没有尝试过,也没有看到过,但是如果你迫切需要减少负载大小,那就是ce这是唯一的办法。
剩下的唯一问题是如何将控制器、指令、服务和过滤器细分为模块。角度种子将过滤器、服务和指令分为单独的模块,但这对我来说似乎有点愚蠢。根据应用程序的不同,我更倾向于按页面/路由组织模块。从性能角度看,这并不是真的无论您如何组织模块,请选择最适合您的项目的方法。来自:
模块
在“app.js”中定义和配置所有模块:这意味着authInterceptorService
angular.module('yourAppName', ['yourAppDep']);
angular.module('yourAppDep');
在如下模块上定义控制器、服务等:
angular.module('yourAppDep').controller('MyCtrl', function () {
// ...
});
虽然我们(AngularJS团队)我们已经讨论过能够在模块粒度上延迟加载,但它还没有出现在Angular下一版本的路线图上。Google+上有一个关于使用多个顶级AngularJS应用程序来产生类似延迟加载的效果的很好的讨论。我还没有尝试过,也没有看到过,但是如果你迫切需要减少负载大小,那就是ce这是唯一的办法。
剩下的唯一问题是如何将控制器、指令、服务和过滤器细分为模块。角度种子将过滤器、服务和指令分为单独的模块,但这对我来说似乎有点愚蠢。根据应用程序的不同,我更倾向于按页面/路由组织模块。从性能角度看,这并不是真的无论您如何组织模块,请选择最适合您的项目的方法。而不是使用全局应用程序
为什么不这样做
angular.module('AngularAuthApp', [
'ngRoute',
'LocalStorageModule',
'angular-loading-bar'
]);
那么,这应该适用于您的服务:
angular
.module('AngularAuthApp')
.factory('authInterceptorService', [
'$q',
'$injector',
'$location',
'localStorageService',
function ($q, $injector, $location, localStorageService) {
//more code
return authInterceptorServiceFactory;
}
]);
与其使用全球应用程序
为什么不这样做
angular.module('AngularAuthApp', [
'ngRoute',
'LocalStorageModule',
'angular-loading-bar'
]);
那么,这应该适用于您的服务:
angular
.module('AngularAuthApp')
.factory('authInterceptorService', [
'$q',
'$injector',
'$location',
'localStorageService',
function ($q, $injector, $location, localStorageService) {
//more code
return authInterceptorServiceFactory;
}
]);
你能在plnkr中复制它吗?我希望你已经在index.html中加载了app.js,然后才加载了其他js文件:)你有网站的后端吗?如果你这样做,你需要清理缓存并在线重新部署你的网站。你能在plnkr中复制它吗?我希望你在index.html:)中的任何其他js文件之前加载了app.js。你有网站的后端吗?如果您这样做,您需要清理缓存并在线重新部署您的网站。authInterceptorService
不是一个单独的模块,它是主模块上的一项服务。authInterceptorService
不是一个单独的模块,它是主模块上的一项服务。