I am using angular js and using and I want to reload grid after every 5 seconds.

我正在使用角度js和使用,我想每5秒后重新加载网格。

My angular js code for build grid is as bellow:

我对构建网格的角度js代码如下:

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

  }

If I am using setTimeout inside the function then it is not refreshing new values.

如果我在函数内部使用setTimeout,那么它不会刷新新值。

Any help/suggestion would be appreciated.

任何帮助/建议将不胜感激。

2 个解决方案

#1


3

Not sure exactly which function you need to wrap and execute every 5 seconds, but you can use the Angular Interval service.

不确定每5秒钟需要包装和执行的功能,但您可以使用Angular Interval服务。

Simply inject $interval to your controller and do this:

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

$interval(functionToRerun, 5000);

This way it will rerun your function every 5 seconds.

这样它每5秒重新运行一次你的功能。

A quick note on why setTimeout didn't refresh the values on the view: setTimeout is not an Angular function, so Angular was not aware of the change, hence the $digest cycle did not run and the changes were not reflected.

快速说明为什么setTimeout没有刷新视图上的值:setTimeout不是Angular函数,因此Angular不知道更改,因此$ digest循环没有运行,并且没有反映更改。

更多相关文章

  1. 运行一次后停止执行函数
  2. Javascript日期/时间函数是否依赖于客户端机器?
  3. 是否可以从节点js中的同一模块导出构造函数和一些正常函数?
  4. javaES6箭头函数的全新特性
  5. JavaScript学习-5——异步同步、回调函数
  6. 什么“返回此”在javascript函数中做什么?
  7. jQuery和AJAX - 使用Ajax添加的对象动态不适用于jQuery函数?
  8. Javascript偏函数与柯里化
  9. 当函数在单独的PHP文件中定义时,调用JavaScript函数onclick按钮事

随机推荐

  1. python自动化办公太难?学这些就够用了
  2. Python地信专题 | 基于geopandas的空间数
  3. 知乎千赞 | 疫情在家能get什么新技能?
  4. 你一定不能错过的pandas 1.0.0四大新特性
  5. 用Python编写小工具下载OSM路网数据
  6. 使用Python检测新冠肺炎疫情拐点,抗疫成果
  7. 对容器镜像的思考和讨论
  8. 用python爬取3万多条评论,看韩国人如何评
  9. 是技术也是艺术 使用geopandas玩转地图可
  10. conda+jupyter玩转数据科学环境搭建