На мой взгляд, есть такой блок кода:
<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 всегда меняются. Я не хочу видеть сообщение о пустых данных, когда я начинаю работать с фильтрами.
Я хочу показать сообщение, когда данные пусты после первоначального запроса, иначе работать с данными и при использовании фильтров после получения пустого массива не показывать сообщение.