列表刷新/重新加载模板

时间:2016-08-05 12:10:57

标签: list cordova ionic-framework page-refresh ionic-view

我是离子和面临问题的新手:我必须加载并重新加载我的模板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 个答案:

答案 0 :(得分:1)

发生的事情之一是您没有看到更新,因为您没有消化新范围。 $ 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();
});