Mar*_*ark 1 angularjs ng-dialog
我收到了上述错误.以下是一些简化的代码片段.应用:
app = angular.module('app', ['app.classes', 'ngDialog' .....]);
Run Code Online (Sandbox Code Playgroud)
模块配置:
app.config(
function ($httpProvider, $translateProvider, $translatePartialLoaderProvider) {
$translateProvider.preferredLanguage(lang);
$translateProvider.useLoader('$translatePartialLoader', {
urlTemplate: 'api/PartialTranslationLoad?lang={lang}&table={part}'
});
$translatePartialLoaderProvider.addPart('...');
$translatePartialLoaderProvider.addPart('...');
$translateProvider.useSanitizeValueStrategy('sanitize');
$httpProvider.interceptors.push('APIInterceptor');
}
);
Run Code Online (Sandbox Code Playgroud)
拦截器服务在app.classes模块中:
classes = angular.module("app.classes", []);
classes.service('APIInterceptor', function ($q, $rootScope, $location, $window, $injector, ngDialog) {
......
}
Run Code Online (Sandbox Code Playgroud)
错误:
找到循环依赖:$ http < - $ templateRequest < - $ compile < - ngDialog < - APIInterceptor < - $ http < - $ translatePartialLoader
如果我不将ngDialog注入我的拦截器,一切都很好.有人可以解释为什么我得到循环依赖性错误?
谢谢
核心问题是:
APIInterceptor 内喷射 ngDialogngDialog 内部注射 $http$http注入APIInterceptor(因为你已经添加了拦截器$httpProvider最简单的解决方案是在需要时使用手动$injector检索ngDialog.
简单的例子:
app.factory('APIInterceptor', function($q, $rootScope, $location, $window, $injector) {
return {
request: function(config) {
var ngDialog = $injector.get('ngDialog');
return config;
}
};
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1081 次 |
| 最近记录: |