如何在angular $ resource中传递动态param

时间:2015-06-09 05:48:55

标签: javascript angularjs ngresource

我想在$ resource中传递默认参数的动态值。请查看Plunker。这时我在工厂中传递了默认参数

app.factory('myFactory', ["$resource", function($resource) {
    return $resource('http://google.com', {timeStamp : (new Date()).getTime()}, {
        query : {
            method : 'GET',
            isArray : true,
            cache : false
        }
    })
}]);

我希望默认的param timeStamp是动态的。 目前,当我点击刷新按钮时,参数值始终相同(检入控制台)

  

我需要此功能,因为IE在 GET 方法上进行缓存而我不想要缓存数据

3 个答案:

答案 0 :(得分:1)

这应该对你有帮助。

app.factory('myFactory', ["$resource", function($resource) {
    return $resource('http://google.com', {}, {
        query : {
            method : 'GET',
            isArray : true,
            params : { ts : Date.now } // <-- new timestamp will be genrated and assigned to ts
        }
    })
}]);

每次调用myFactory.query()方法时,带有当前时间戳值的查询字符串ts都会显示在网址中。

答案 1 :(得分:0)

var app = angular.module('plunker', ['ngResource']);

app.controller('MainCtrl', function($scope,myFactory) {
  $scope.refresh = function(){
    myFactory.query({timeStamp : (new Date()).getTime()}).$promise.then(function(){})
  }
});
app.factory('myFactory', ["$resource", function($resource) {
    return $resource('http://google.com', {}, {
        query : {
            method : 'GET',
            isArray : true,
            cache : false
        }
    })
}]);

在调用函数之前,函数内部的代码不会执行。但是在对象的声明中,所有这些都是在创建对象时执行的。你可能也有这个。

app.factory('myFactory', ["$resource", function($resource) {
    return $resource('http://google.com', {timestamp: 1433865286924}, {
        query : {
            method : 'GET',
            isArray : true,
            cache : false
        }
    })
}]);

答案 2 :(得分:0)

Lekhnath说的正确答案是

app.factory('myFactory', ["$resource", function($resource) {
    return $resource('http://google.com', {}, {
        query : {
            method : 'GET',
            isArray : true,
            params : { ts : Date.now } // <-- new timestamp will be genrated and assigned to ts
        }
    })
}]);

或者如果我们想要传递默认参数部分,可以将其作为

完成
app.factory('myFactory', ["$resource", function($resource) {
    return $resource('http://google.com', { ts : Date.now }, { // <-- new timestamp will be genrated and assigned to ts
        query : {
            method : 'GET',
            isArray : true
        }
    })
}]);