Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/411.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript ';未捕获类型错误:未定义不是函数';将控制器/服务放在单独的js文件中时_Javascript_Angularjs_Angularjs Service_Angularjs Factory - Fatal编程技术网

Javascript ';未捕获类型错误:未定义不是函数';将控制器/服务放在单独的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

我正在尝试将我的控制器和服务(以前都在我的一个app.js文件中)分离到单独的js文件中。然而,我得到了一个
未捕获的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
不是一个单独的模块,它是主模块上的一项服务。