Javascript 如何在angular js中每5秒重新加载网格?

Javascript 如何在angular js中每5秒重新加载网格?,javascript,jquery,angularjs,Javascript,Jquery,Angularjs,我正在使用angular js和,我想每5秒重新加载一次网格 我的构建网格代码如下所示: App.controller('NGTableCtrl', NGTableCtrl); function NGTableCtrl($scope, $filter, ngTableParams, $resource, $timeout, ngTableDataService) { 'use strict'; // required for inner references var vm = th

我正在使用angular js和,我想每5秒重新加载一次网格

我的构建网格代码如下所示:

App.controller('NGTableCtrl', NGTableCtrl);

function NGTableCtrl($scope, $filter, ngTableParams, $resource, $timeout, ngTableDataService) {
  'use strict';
  // required for inner references
  var vm = this;
  var data = [
  {name: "Moroni",  age: 50, money: -10   },
  {name: "Tiancum", age: 43, money: 120   },
  {name: "Jacob",   age: 27, money: 5.5   },
  {name: "Nephi",   age: 29, money: -54   },
  {name: "Enos",    age: 34, money: 110   },
  {name: "Tiancum", age: 43, money: 1000  },
  {name: "Jacob",   age: 27, money: -201  },
  {name: "Nephi",   age: 29, money: 100   },
  {name: "Enos",    age: 34, money: -52.5 },
  {name: "Tiancum", age: 43, money: 52.1  },
  {name: "Jacob",   age: 27, money: 110   },
  {name: "Nephi",   age: 29, money: -55   },
  {name: "Enos",    age: 34, money: 551   },
  {name: "Tiancum", age: 43, money: -1410 },
  {name: "Jacob",   age: 27, money: 410   },
  {name: "Nephi",   age: 29, money: 100   },
  {name: "Enos",    age: 34, money: -100  }
 ];
 // SELECT ROWS
 vm.data = data;
 vm.tableParams3 = new ngTableParams({
  page: 1,            // show first page
  count: 10          // count per page
  }, {
  total: data.length, // length of data
  getData: function ($defer, params) {
      // use build-in angular filter
      var filteredData = params.filter() ?
              $filter('filter')(data, params.filter()) :
              data;
      var orderedData = params.sorting() ?
              $filter('orderBy')(filteredData, params.orderBy()) :
              data;

      params.total(orderedData.length); // set total for recalc pagination
      $defer.resolve(orderedData.slice((params.page() - 1) * params.count(), params.page() * params.count()));
  }
});

// EXPORT CSV
  var data4 = [{name: "Moroni", age: 50},
  {name: "Tiancum", age: 43},
  {name: "Jacob", age: 27},
  {name: "Nephi", age: 29},
  {name: "Enos", age: 34},
  {name: "Tiancum", age: 43},
  {name: "Jacob", age: 27},
  {name: "Nephi", age: 29},
  {name: "Enos", age: 34},
  {name: "Tiancum", age: 43},
  {name: "Jacob", age: 27},
  {name: "Nephi", age: 29},
  {name: "Enos", age: 34},
  {name: "Tiancum", age: 43},
  {name: "Jacob", age: 27},
  {name: "Nephi", age: 29},
  {name: "Enos", age: 34}];

  vm.tableParams4 = new ngTableParams({
  page: 1,            // show first page
  count: 10           // count per page
  }, {
  total: data4.length, // length of data4
  getData: function($defer, params) {
      $defer.resolve(data4.slice((params.page() - 1) * params.count(), params.page() * params.count()));
  }
  });


  // SORTING
  vm.tableParams = new ngTableParams({
  page: 1,            // show first page
  count: 10,          // count per page
  sorting: {
      name: 'asc'     // initial sorting
  }
  }, {
  total: data.length, // length of data
  getData: function($defer, params) {
      // use build-in angular filter
      var orderedData = params.sorting() ?
              $filter('orderBy')(data, params.orderBy()) :
              data;

      $defer.resolve(orderedData.slice((params.page() - 1) * params.count(), params.page() * params.count()));
  }
  });

  // FILTERS
  vm.tableParams2 = new ngTableParams({
  page: 1,            // show first page
  count: 10,          // count per page
  filter: {
      name: '',
      age: ''
      // name: 'M'       // initial filter
  }
  }, {
  total: data.length, // length of data
  getData: function($defer, params) {
      // use build-in angular filter
      var orderedData = params.filter() ?
             $filter('filter')(data, params.filter()) :
             data;

      vm.users = orderedData.slice((params.page() - 1) * params.count(), params.page() * params.count());

      params.total(orderedData.length); // set total for recalc pagination
      $defer.resolve(vm.users);
  }
  });

  }
如果我在函数中使用setTimeout,那么它不会刷新新值


如有任何帮助/建议,我们将不胜感激。

请尝试<代码>$interval

$interval(function () {
    loadData();
}, duration)

更多信息请访问$interval

不确定每5秒需要包装和执行哪个函数,但您可以使用Angular service

只需将
$interval
注入控制器并执行以下操作:

$interval(functionToRerun, 5000);
这样,它将每隔5秒重新运行您的函数


关于setTimeout为什么没有刷新视图上的值的简要说明:
setTimeout
不是角度函数,因此Angular没有意识到更改,因此$digest循环没有运行,更改也没有反映出来。

使用$timeout而不是setTimeout您想在哪里重新加载此网格,在控制器中设置计时器?函数NGTableCtrl(..)本身想要重新加载,然后我们需要将$timeout代码放在哪里?关于setinterval和$interval之间的差异,您是对的,但是在OP的情况下,这并不重要,因为
functionToRun
会触发摘要本身。@dfsq我可能错过了那行代码,你在哪里看到它触发了文摘?你知道他想重新运行哪个函数吗?为了重新加载
ngTable
grid-one将调用
tableParams.reload
方法,该方法将在内部调用相应的
getData
方法。依次使用
$defer.resolve
。无论如何,
$interval
也不会有任何伤害:)@dfsq哦,好的,我不知道这个链:)函数NGTableCtrl(..)本身想要重新加载,那么我们需要将$interval代码放在哪里?