Как работать с totalItems ui-grid в директиве ng-if при работе с фильтрами и подкачкой на стороне сервера - PullRequest
0 голосов
/ 14 марта 2020

На мой взгляд, есть такой блок кода:

<div class="alert alert-info text-center"
     ng-if="!loading && !model.items.length">
  There are currently no data. To get started click
  <a href ng-click="showDataModal()"><i class="fa fa-plus"></i>
    Add Data
  </a>.
</div>

Я также использую пользовательскую сетку angularjs с разбиением на страницы на стороне сервера, фильтрацией и выполнением назначения

$scope.gridOptions.data = model.items

Мои функции обратного вызова:

gridApi.pagination.on.paginationChanged($scope, function (newPage, pageSize) {
    $scope.load();
});

gridApi.core.on.filterChanged($scope, function () {
    $scope.load();
});

В методе $scope.load(); я подготавливаю параметры, которые позволят коду на стороне сервера иметь достаточную информацию, чтобы иметь возможность получить указанные c подмножество данных, а затем обновите переменную $scope.gridOptions.totalItems, указав общее количество существующих строк.

$scope.load = function () {
  ...
  $scope.model.load(params).then(function () {
       $scope.gridOptions.totalItems = $scope.model.total;
       $scope.loading = false;
  });
}

Проблема в том, что когда я ставлю фильтр и получаю в ответ пустой массив, я начинаю видеть сообщение с моей точки зрения, потому что model.items.length имеет значение false. Как получить это сообщение только после первоначального запроса, когда нет фильтров и нет данных со стороны сервера и когда model.items.length имеет значение true, и я начинаю работу с фильтрами, которые не видят сообщение, когда массив становится пустым. Я не понимаю, как это сделать, потому что totalItems в gridOptions всегда меняются. Я не хочу видеть сообщение о пустых данных, когда я начинаю работать с фильтрами.

Я хочу показать сообщение, когда данные пусты после первоначального запроса, иначе работать с данными и при использовании фильтров после получения пустого массива не показывать сообщение.

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