Различать загрузку данных в первый раз и загрузку отфильтрованных данных в скользящей сетке - PullRequest
0 голосов
/ 04 октября 2019

Я использую 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();

В то время как на карте я отображаю данные в событии "onRowCountChanged" объекта DataView.

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 голосов
/ 04 октября 2019

Разве вы не можете просто объявить

var dataHasLoaded = false;

где-нибудь и использовать это для принятия решения, например:

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

Вы также можете установить

dataHasLoaded = false;

в другом месте кода, если вы хотите загрузить данные снова.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...