javascript - 从 Angular JS 中的模块更新作用域变量

标签 javascript angularjs angularjs-scope

我有以下模块:

var mod;

mod = angular.module('ajax-interceptor', []);

mod.config(function($httpProvider) {

    $httpProvider.interceptors.push(["$q", function($q, dependency1, dependency2) {
        return {
            'request': function(config) {
                //want to update a scope variable when a request is placed
                return config;
            },

            'requestError': function(rejection) {
                return $q.reject(rejection);
            },

            'response': function(response) {
                return response;
            },

            'responseError': function(rejection) {
                return $q.reject(rejection);
            }
        };
    }]);
});

我想在每次发出请求时更新作用域变量。我怎样才能做到这一点?我无法在配置 block 中注入(inject) $scope 。我将使用此变量来跟踪用户的事件,例如用户 10 分钟内没有请求,用户将被强制注销。

最佳答案

您可以向模块添加工厂并跟踪其中的用户事件:

mod.factory("factoryName", [
    function(){
        var factory = {};
        factory.track = function(userActivity){
            // Save user activity
        };

        return factory;
    }
]);

然后您必须将工厂注入(inject) $httpProvider 并使用它:

$httpProvider.interceptors.push(["$q", "factoryName", function($q, factoryName, dependency1, dependency2) {
    return {
        'request': function(config) {
            //want to update a scope variable when a request is placed
            factoryName.track(userActivity);
            return config;
        }
    };
}]);

关于javascript - 从 Angular JS 中的模块更新作用域变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33409471/

相关文章:

javascript - 嵌入的显示/隐藏功能

javascript - 如何在 AngularJS 的页面上找到第一个键 "id"?

AngularJS:动态编译指令模板时的正确范围绑定(bind)

javascript - 没有重复字符的最长子串极端情况

javascript - VueJS : dynamic class name inside style tags

javascript - React Native - 为什么这个状态对象在函数中是空的?

mysql - 如何让 BreezeJS 使用 Angular + Node 与 MySQL DB 对话?

angularjs - 模型属性更改时不会调用 $watch

javascript - Angular 指令父范围

angularjs - 为什么 Angular (1.5) 组件总是有一个独立的作用域?