Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angularjs 在ui网格上交换数据需要很多时间_Angularjs_Angular Ui Grid_Ui Grid - Fatal编程技术网

Angularjs 在ui网格上交换数据需要很多时间

Angularjs 在ui网格上交换数据需要很多时间,angularjs,angular-ui-grid,ui-grid,Angularjs,Angular Ui Grid,Ui Grid,我有一个网格,根据某些条件,我必须更改来自后端的数据。第一次从后端加载数据时,网格工作正常。当我开始切换数据时,网格会很好地显示新数据,但会冻结一段时间。我注意到这个时间是随机的,通常是3秒或更长 我试图通过不同的方式将数据分配给网格,但结果是一样的: (一) 然后 Demande.query({lb:condition},函数(result){ $timeout(函数(){$scope.myData=result;},0);//我也尝试不使用$timeout } 2) 我尝试将数据直接分配到网

我有一个网格,根据某些条件,我必须更改来自后端的数据。第一次从后端加载数据时,网格工作正常。当我开始切换数据时,网格会很好地显示新数据,但会冻结一段时间。我注意到这个时间是随机的,通常是3秒或更长

我试图通过不同的方式将数据分配给网格,但结果是一样的:

(一)

然后

Demande.query({lb:condition},函数(result){
$timeout(函数(){$scope.myData=result;},0);//我也尝试不使用$timeout
}

2) 我尝试将数据直接分配到网格

Demande.query({lb: condition}, function (result) {
    $timeout(function () {$scope.gridOptions.data = result;},0);
}
3) 我将上述方法与

a)
$scope.gridApi.core.notifyDataChange(uiGridConstants.dataChange.ROW)

b)
$scope.gridApi.core.refreshRows()

但问题依然存在。我正在使用angular ui grid 4.0.1

任何想法都将不胜感激

另一种选择:

4)
$scope.gridOptions.data=angular.copy($scope.myData)

应该给网格一点喘息的时间

更新:

angular.module('app',['ui.grid']))
.controller('MainCtrl',['$scope',函数($scope){
$scope.gridOptions={
columnDefs:[]
}
对于(变量i=0;i<80;i++){
$scope.gridOptions.columnDefs.push({
名称:'C'+(i+1),
enableColumnMenu:false
});
}
var dataLoadCounter=1;
$scope.switchData=函数(){
$scope.gridOptions.data=[];
对于(变量i=0;i<1000;i++){
$scope.gridOptions.data.push({});
对于(var j=0;j<80;j++){
$scope.gridOptions.data[i]['C'+(j+1)]='D'+dataLoadCounter+(j+1);
}
}
dataLoadCounter++;
}
$scope.switchData();
}]);
div[ui网格]{
宽度:4500px;
}

交换数据

超时毫无意义。冻结意味着什么?浏览器没有反应/浏览器程序冻结?我添加了$timeout,如下所示:。冻结是指我的应用程序的网格和其他UI小部件(按钮、选择等)没有反应。Thank显示网格中有多少列,我们在这里讨论的是多少行我有大约80列,根据条件(我用来从后面获取数据)有不同数量的行。但即使我只有3行,问题也会出现。谢谢Tim的回复。我尝试了你的方法,但不幸的是它不起作用。请注意,当用户单击按钮时,我尝试在网格中插入新行时,也会出现此问题。80列,1行,切换数据。。。您可以看到网格滞后,对吗?对于1行80列,网格滞后,但时间更短且可以接受。事实上,这几乎没有被注意到。我很想创建一个演示,这样我们就可以看到,要我增加行数吗?因为它主要是一个更大的记录集引人注目?好的,我会尝试一下,并尽快回来给你。非常感谢您抽出时间。
Demande.query({lb: condition}, function (result) {
    $timeout(function () {$scope.gridOptions.data = result;},0);
}