我知道这几乎是使控制器缩小安全的惯例
function redirectWhenLoggedOut($q, $injector) {
return {
responseError: function (rejection) {
var $state = $injector.get('$state');
var rejectionReasons = ['token_not_provided', 'token_expired',
'token_absent', 'token_invalid'
];
angular.forEach(rejectionReasons, function (value, key) {
if (rejection.data.error === value) {
localStorage.removeItem('user');
$state.go('main.login');
}
});
return $q.reject(rejection);
}
}
}

但我的问题是我在控制器中有一个破坏应用程序的功能。以下是功能
{{1}}
我如何以一种能使其缩小证明的方式重构它?
答案 0 :(得分:0)
这应该有效,将两个函数变量移动到控制器中。如果这不起作用,您可能需要首先在主控制器函数中获取对“this”的引用:var vm = this;
然后使用vm.$q
。
angular.module('myApp', [])
.controller('MyController', ['myService', '$q', '$injector', function (myService, $q, $injector) {
// Do something with myService
function redirectWhenLoggedOut() {
return {
responseError: function (rejection) {
var $state = $injector.get('$state');
var rejectionReasons = ['token_not_provided', 'token_expired',
'token_absent', 'token_invalid'
];
angular.forEach(rejectionReasons, function (value, key) {
if (rejection.data.error === value) {
localStorage.removeItem('user');
$state.go('main.login');
}
});
return $q.reject(rejection);
};
}]);