如何在角度js中每5秒重新加载网格?
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循环没有运行,并且没有反映更改。
更多相关文章
- 运行一次后停止执行函数
- Javascript日期/时间函数是否依赖于客户端机器?
- 是否可以从节点js中的同一模块导出构造函数和一些正常函数?
- javaES6箭头函数的全新特性
- JavaScript学习-5——异步同步、回调函数
- 什么“返回此”在javascript函数中做什么?
- jQuery和AJAX - 使用Ajax添加的对象动态不适用于jQuery函数?
- Javascript偏函数与柯里化
- 当函数在单独的PHP文件中定义时,调用JavaScript函数onclick按钮事