2015-06-09 2 views
3

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

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

Я хочу, чтобы по умолчанию параметр timeStamp был динамическим. в настоящее время, когда я нажимаю на Refresh Баттона значение паров идет всегда же (Проверьте в консоли)

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

ответ

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

+0

, он все еще не дает динамических значений ** ts **. как только значение ** ts ** установлено, если вы нажмете кнопку несколько раз, то значение будет равно. –

+0

О да, я сделал ошибку там, вызвав Date.now() напрямую. Вы можете попробовать этот отредактированный. – Lekhnath

+0

Почему отредактированная версия работает? И мог @AmitMourya просто обновить параметр по умолчанию до {timestamp: Date.now} –

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

Привет @ Matt Я не хочу, чтобы передать параметр при вызове фабричной функции. Я хочу, чтобы это было сделано с параметрами по умолчанию –

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