Angularjs需要为角轮询器的每个刻度改变一个参数

Angularjs需要为角轮询器的每个刻度改变一个参数,angularjs,factory,poller,Angularjs,Factory,Poller,下面是angular poller的演示: 我需要能够将一个参数传递到工厂中,以构造一个动态url,以便使用newTime参数调用“greet” 如何修改poller.get()以传入“newTime” poller1 = poller.get(greet, {action: 'jsonp_get', delay: 1000}); .factory('greet', function ($resource) { return $resource('https://www.exampl

下面是angular poller的演示:

我需要能够将一个参数传递到工厂中,以构造一个动态url,以便使用newTime参数调用“greet”

如何修改poller.get()以传入“newTime”

poller1 = poller.get(greet, {action: 'jsonp_get', delay: 1000});

.factory('greet', function ($resource) {
    return $resource('https://www.example.com?time=' + newTime,
        {
        },
        {
            jsonp_get: { method: 'JSONP' }
        });
})
/--演示--/

没有使用角度轮询器,但似乎您应该能够通过属性
argumentsArray

var poller1 = poller.get(greet, {
    action: 'jsonp_get', 
    delay: 1000,
    argumentsArray: [{
        time: newTime
    }]
});
因此,在检索轮询器时,将计算数组
argumentsArray


编辑:澄清之后,您似乎需要为轮询的每个勾选改变一个参数,而不是在获得轮询器时。您可以通过在请求拦截器中添加参数来解决此问题:

// define interceptor
app.factory('requestInterceptor', function() {
    return {
        'request': function(request) {
            // if needed, wrap the following in a condition
            request.params = request.params || {};
            request.params.time = moment();
            return request;
        }
    }
})

// register interceptor
app.config(function ($httpProvider) {
    $httpProvider.interceptors.push('requestInterceptor');
})

我已经尝试过这个方法,但是工厂返回函数()似乎只计算一次,这样时间就不会改变var poller1=poller.get(greet,{action:'jsonp_get',delay:1000,argumentsArray:[{time:moment().format('yyyyy-MM-DD HH:MM:ss')})<代码>时间值将在每次检索轮询器时发生变化,即对于每个
轮询器。get
调用。是否要在轮询的每个勾号上更改url?在轮询的每个勾号上都是。您可以为该用例使用拦截器。请参见编辑。
// define interceptor
app.factory('requestInterceptor', function() {
    return {
        'request': function(request) {
            // if needed, wrap the following in a condition
            request.params = request.params || {};
            request.params.time = moment();
            return request;
        }
    }
})

// register interceptor
app.config(function ($httpProvider) {
    $httpProvider.interceptors.push('requestInterceptor');
})