在Slick Grid中区分首次数据加载与过滤后的数据加载

时间:2019-10-04 07:44:22

标签: angular slickgrid

我正在使用Slick Grid渲染数据。相同的数据显示在地图上。我正在使用以下代码在Slick Grid中填充数据。

 this.dataViewObj.beginUpdate();
 if (items && items.length > 0) {
      this.dataViewObj.setItems(items, ["id"]);
 }
 this.dataViewObj.endUpdate();
 this.dataViewObj.refresh();

 this.angularGrid.slickGrid.render();
 this.angularGrid.gridService.renderGrid();

在地图上时,我正在DataView对象的“ onRowCountChanged”事件中呈现数据。

this.dataViewObj.onRowCountChanged.subscribe(function (e, args) {
   /**
   * iterate over data in data view object and create an array of pointData 
   */
   dataSharingService.notifyMapToRenderPoints.emit(pointData)
})

现在的问题是,在网格中首次呈现数据时以及每次将过滤器应用于网格时,都会调用“ onRowCountChanged”函数。

我想区分网格中的首次数据加载和滤波后的数据加载,因为这是我第一次要在地图上绘制点,并且每次应用滤镜时,都应基于同一点设置可见/不可见在网格中看到的数据上。

如何在Slick Grid中区分首次数据加载和过滤后的数据加载。

1 个答案:

答案 0 :(得分:0)

您不能只声明

var dataHasLoaded = false;

在某处,并使用它来做出决定,例如:

this.dataViewObj.onRowCountChanged.subscribe(function (e, args) {
  if (dataHasLoaded) {
    refreshBehaviour();
  } else {
    dataLoadBehaviour();
    dataHasLoaded = true;
  } 
})

您还可以设置

dataHasLoaded = false;

如果要再次加载数据,请在代码的其他位置。