ag-grid на стороне сервера бесконечная прокрутка доступа к реквизитам - PullRequest
0 голосов
/ 07 апреля 2019

Я пытаюсь реализовать модель строк на стороне сервера ag-grid, как описано в их документации здесь .Я пытаюсь передать вызов API вместе с его параметрами в качестве реквизита для компонента сетки.Проблема в том, что при попытке доступа к реквизитам через this.props или к состоянию через this.state они оба не определены.Мой код выглядит следующим образом:

onGridReady(params) {
    this.gridApi = params.api;
    this.gridColumnApi = params.columnApi;

    this.gridApi.showLoadingOverlay();
      var dataSource = {
        rowCount: null,
        getRows: function(params) {
          setTimeout(function() {
            let serviceParams = this.props.dataServiceParams ?  this.props.dataServiceParams.slice() : {};
            serviceParams.pageSize = this.state.paginationPageSize; // this will be the rows returned per service call
            serviceParams.index =  // if there is more than 1 page for the pagesize this is the index/page to return.
            serviceParams.sortAndFilters = gridUtility.combineSortAndFilters(params.sortModel, params.filterModel);

            this.props.dataService(serviceParams)
                .then(out => {
                  var rowsThisPage = out;
                  var lastRow = -1;
                  params.successCallback(rowsThisPage, lastRow);
                });

            params.context.componentParent.gridApi.hideOverlay();
          }, 500);
        }
      };

      params.api.setDatasource(dataSource);
  };

dataService prop содержит мой вызов service / api, в то время как dataServiceParams содержит любые параметры, необходимые для службы.Я добавляю дополнительные параметры для сортировки, фильтрации и возврата необходимой страницы данных / индекса.Что мне здесь не хватает?

1 Ответ

0 голосов
/ 08 апреля 2019

Вам необходимо использовать Arrow function для доступа к свойствам родительской области. Проверьте код ниже для getRows и setTimeout.

  var dataSource = {
    rowCount: null,
    getRows: (params) => {
      setTimeout(() => {
        let serviceParams = this.props.dataServiceParams ?  this.props.dataServiceParams.slice() : {};
        serviceParams.pageSize = this.state.paginationPageSize; // this will be the rows returned per service call
        serviceParams.index =  // if there is more than 1 page for the pagesize this is the index/page to return.
        serviceParams.sortAndFilters = gridUtility.combineSortAndFilters(params.sortModel, params.filterModel);

        this.props.dataService(serviceParams)
            .then(out => {
              var rowsThisPage = out;
              var lastRow = -1;
              params.successCallback(rowsThisPage, lastRow);
            });

        params.context.componentParent.gridApi.hideOverlay();
      }, 500);
    }
  };
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...