创建了一个工厂“resInterceptor”,其中我使用了在工厂外部定义的函数(requestInterceptor,responseInterceptor)。并且在函数内部给出错误“$ q未定义”。但是我只想这样做。请建议如何访问requestInterceptor和responseInterceptor内部的$ q。
angular.module('resModule', ['ngResource', 'ngCookies'])
.factory('resInterceptor', ['$rootScope', '$q', '$location', resInterceptor]);
function resInterceptor($rootScope, $q, $location) {
return {
request: requestInterceptor,
response: responseInterceptor,
};
}
function requestInterceptor(config) {
return config || $q.when(config); //$q is not defined
}
function responseInterceptor(response) {
return response || $q.when(response);
}
最佳答案
为了使它起作用,您需要显式传递$q
并使requestInterceptor
返回实际的回调函数:
function resInterceptor($rootScope, $q, $location) {
return {
request: requestInterceptor($q),
..
};
}
function requestInterceptor($q) {
return function (config) {
return config || $q.when(config);
};
}
当然,如果您仅将函数内联到首先定义
$q
的同一作用域中,则此方法就不会那么复杂。关于javascript - $ q未在函数中定义,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30119236/