2015-05-15 2 views
2

Когда моя страница начинается с setDataOnPage2, выполняется и работает нормально. Я могу получить данные в $ scope.records, чтобы представить его на странице.Угловой http get not refreshing data

$scope.setDataOnPage2 = function() { 

    $http({ 
     method: 'get', 
     url: GetSchedule, 
     params: { 
      date: $scope.currentDate 
     } 
    }).success(function (results) { 
     console.log(JSON.stringify(results)); 
     $scope.records = results; 
    }); 
    } 
    $scope.setDataOnPage2(); 

Моя проблема в том, что я ударил эту функцию с помощью кнопки ng-click. Когда я нажимаю кнопку, я вижу результаты в презентации JSON из-за console.log (JSON.stringify (results)), но это старые данные.

Когда я открываю форму на своем компьютере, она работает нормально, затем я перехожу на мой телефон, чтобы обновить данные, но когда я нажимаю кнопку обновления, которая выполняет setDataOnPage2, она показывает JSON в консоли, но не делает покажите обновления, которые я сделал на телефоне, пока не обновить страницу. Я не уверен, почему мой http-вызов кэширует мои данные.

Я даже поставил точку останова в коде, который должен выполняться http get, но он выполняется только тогда, когда страница обновляется, а не когда я нажимаю кнопку обновления, которая выполняет setDataOnPage2.

Странно, что json отображается в консоли, но данные не обновляются и не попадают в точку останова.

Любые идеи о том, почему это может происходить?

+0

добавить .error (функция (данные, статус, заголовки , config) {console.log (data);}) (после окончания успеха ')'), чтобы вы могли искать себя, что происходит. – celerno

+0

Я добавил .error, и это не ошибка ... он проходит через успех, но не получает информацию об обновлении. –

+0

Вы пробовали задавать 'cache: false' в своем объекте запроса? – Corey

ответ

7

Возможно, это проблема с кешированием в браузере. Браузер может кэшировать запрос на получение. Чтобы избежать проблемы, просто добавьте URL-адрес запроса с меткой времени.

GetSchedule+"&random="+new Date().getTime() 

, если у вас уже есть параметры запроса в противном случае использовать

GetSchedule+"?random="+new Date().getTime() 

или вы можете также добавить заголовки, чтобы избежать кэш, как

headers: { 
       'Cache-Control': 'no-cache', 
       'Pragma':'no-cache' 
      }, 
+0

не нравится амперсанд –

+0

, что ваш URL переменная GetSchedule? – Kathir

+0

, если это простой URL-адрес, например http://adfaf.com/adfa, вам просто нужно добавить «? Random =» + new Date(). GetTime(). амперсанд - это если у вас уже есть параметры запроса. – Kathir