ui-grid:将$ interval触发的函数的输出绑定到ui-grid

时间:2017-04-22 13:48:48

标签: angularjs angular-ui-grid ui-grid

我正在研究Angularjs ui网格,我想每1分钟刷新网格中的数据。因此,我使用$ interval来触发一个获取数据的函数,并且函数的输出需要绑定到ui-grid。

不使用$ interval,函数输出成功绑定到网格(尽管每1分钟没有刷新!)。但是,使用$ interval,输出不会绑定到网格。

以下是我的代码,

var grdDataPromise;

function GetData() {
        return InfoDataService.getDummyDetails($scope.getDtToday(), 'ABC', 'PQR');
}

$scope.startGetData = function () {
    $scope.stopGetData();
    grdDataPromise = $interval(GetData, REFRESH_RATE);
    grdDataPromise.then(function (result) {
    $scope.gridOptionsDashBoard.data = result;
});
}

$scope.startGetData();

$scope.stopGetData = function () {
        $interval.cancel(grdDataPromise);
}

$scope.$on('$destroy', function () {
        $scope.stopGetData();
});

这里,grdDataPromise.then()函数永远不会触发,我认为这是问题,但我无法找到解决此问题的方法。

有人建议在每1分钟间隔执行一次函数后如何将数据绑定到网格?

提前致谢。

1 个答案:

答案 0 :(得分:0)

有关ui-grid的动态数据,请参阅the documentation。如果您仔细阅读,它说您必须手动触发数据更改事件,以便网格知道有新数据可供显示。阅读this other tutorial将告诉你如何做到这一点。具体来说,您需要致电:

$scope.gridApi.core.notifyDataChange(uiGridConstants.dataChange.COLUMN);

其中

dataChange.* 

是一个ui-grid常量,表示改变了什么。我目前无法发布超过2个链接,但如果您在ui-grid API文档中搜索“uiGridConstants”,您将找到它们。请务必在应用中包含所需的依赖项,这很容易让人忘记。