2016-08-05 2 views
0

Я новичок в ионной и сталкивающейся с проблемой: мне нужно загрузить и перезагрузить мой шаблон на 1 и 1 минуту, и это нормально в первый раз, но когда функция взять записи из сервер снова вызван, он не очищает шаблон, просто добавьте записи снова, поэтому, если у меня есть только одна запись на сервере, она показывает мне две в первую минуту, три на вторую минуту и ​​последовательно.Список обновления/перезагрузки шаблона

Я попытался: cache = false, window.reload, state.reload, state.go и многие другие попытки, но ничего не дает результат, который мне нужен, потому что мне просто нужно, чтобы содержимое списка было заменено и не было добавлено , Мой код:

list = function() { 
$http.post(G.URL + 'page.jsp') 
    .then(function (response) { 
     $scope.total = response.data.records.length; 
     $scope.items = response.data.records; 
     $scope.counter = 1; 
    }, function (error) { $scope.items = "Nothing"; });} 

$interval(function() { 
$scope.counter += 1; 
if ($scope.counter > 59) { 
    $scope.counter = 1; 
    list(); 
    //$ionicHistory.clearCache([$state.current.name]).then(function() { $state.reload(); }); } }, 1000); 

Заранее спасибо

ответ

1

Одна из вещей Thats происходит то, что вы не видите обновления, потому что вы не переваривать новую область. $ scope. $ apply() и $ timeout() запускают цикл дайджеста, чтобы область могла обновлять и показывать новые значения. Для вызовов $ http требуется время, чтобы вернуться к клиенту, и если вы обновляете область с задержкой, вы должны запустить цикл дайджеста. Я также очистил ваш код.

.controller('Ctrl', function($scope, G, $interval, $http, $timeout) { 
    // always initialize your scope variables 
    angular.extend($scope, { 
    total: 0, 
    items: [] 
    }); 

var list = function() { 
    $http.post(G.URL + 'page.jsp') 
    .then(function (response) { 
     angular.extend($scope, { 
     total: response.data.records.length, 
     items: response.data.records 
     }); 
     $timeout(); // this is used to reload scope with new delayed variables 
    }, function (err) { 
     console.error(JSON.stringify(err)); 
    }); 
    }; 

    // call list every 1000 milliseconds * 60 = 1 minute 
    $interval(list, 1000 * 60); 

    // call list on page load so you don't wait a minute 
    list(); 
}); 
+0

tothefux, спасибо много, решить эту проблему, я искал, что Google в течение нескольких недель, но ничего, что на самом деле решить ... –

+0

Нет проблем Лучано, рад, что я не мог помочь. Пожалуйста, отметьте ответ как принятый, чтобы я мог получить некоторые пункты пирожных! – tothefux

Смежные вопросы