Как передать динамический параметр в угловых $ресурс


Я хочу передать динамическое значение параметра default в $resource. Пожалуйста, загляните в поршень . Вот когда я прошел дефолтный парам на заводе как

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

Я хочу, чтобы временная метка param по умолчанию была динамической. в настоящее время, когда я нажимаю на кнопкуRefresh , значение param всегда одинаковое (Check in console)

Мне нужна эта функциональность, потому что IE делает кэш наGET метод, и я не хочу кэшировать данные

3 3

3 ответа:

Это должно помочь вам.

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() в url-адресе будет отображаться строка запроса ts с текущим значением метки времени.

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
        }
    })
}]);

Правильный ответ по словам 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
        }
    })
}]);

Или если мы хотим передать раздел param по умолчанию, это можно сделать как

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
        }
    })
}]);