Я искал решение по всему Интернету, но не смог найти решение, которое соответствует моей конкретной потребности., используя Ng-таблицу, добавив фильтр пользовательских номеров в конкретный столбец
У меня есть таблица (построенная с использованием модуля ng-table) с несколькими столбцами, как показано ниже.
headerA headerB headerC_start headerC_end
-filter- -filter- -filter- -filter-
AAA AAAA 10 10
BBB BBBB 12 12
CCC CCCC 13 13
DDD DDDD 14 14
EEE EEEE 15 15
FFF FFFF 22 22
Каждый фильтр прямо под заголовком работает как «содержащий» функциональный фильтр. То, что я имею в виду под «содержать», это если я положил «1» в фильтр заголовка C, он будет показывать 10, 12, 13, 14 и 15 (так как эти числа содержат «1») с соответствующими данными из заголовка A и B.
Для заголовков A и B «содержать» все в порядке, но я хочу, чтобы заголовок C имел функцию «range» вместо «содержать». Поэтому моя цель - ввести минимальное значение в headerC_start и максимальное значение в headerC_end, и я хочу, чтобы таблица отфильтровывала все числа между этим минимумом и максимумом со всеми соответствующими заголовками формы информации A и B. Итак, если я ставлю 10 на headerC_start и 14 в headerC_end, он будет показывать только 10, 12, 13 и 14 со всей соответствующей информацией из заголовка A и заголовка B.
Я пробовал несколько разных способов решить эту проблему, включая запись собственной функции фильтра , но я не смог применить эту функцию пользовательского фильтра к header_C, поскольку все заголовки A, B и C привязаны к модулю ng-table.
Ниже приведены фрагменты моих кодов.
--- HTML
<table ng-table="someTable" show-filter="true" class="table table-bordered table-striped table-condensed">
<tr ng-repeat="item in data">
<td data-title="'headerA'" sortable="'headerA'" filter="{ 'headerA': 'text' }" >
{{item.attributeA}}
</td>
<td data-title="'headerB'" sortable="'headerB'" filter="{ 'headerB': 'text' }" >
{{item.attributeB}}
</td>
<td data-title="'headerC_start'" sortable = "'headerC_start'" filter = "{'headerC_start':'text'}">
{{item.attributeC}}
</td>
<td data-title ="'headerC_end'" sortable = "'headerC_end'" filter="{'headerC_end':'text'}">
{{item.attributeC}}
</td>
--- JS
angular.module('someApp', ['ngTable', 'ui.bootstrap', 'mainApp'])
.config(function someAppConfig($routeProvider) {
$routeProvider
.when('/some', {
templateUrl: 'view/some.html',
controller: 'some_table_controller'
});
})
.controller('some_table_controller', function ($scope, $http, $filter, NgTableParams) {
$http.get("http://127.0.0.1:5000/some/range/xxxx", {cache: true})
.then(function (response) {
$scope.something = response.data;
$scope.somethingTable = new NgTableParams({
page: 1,
count: 10
},
{
getData: function (params) {
if (params.sorting()) {
$scope.data = $filter('orderBy')($scope.something, params.orderBy());
} else {
$scope.data = $scope.something;
}
if (params.filter()) {
$scope.data = $filter('filter')($scope.data, params.filter());
} else {
$scope.data = $scope.data;
}
$scope.data = $scope.data.slice((params.page() - 1) * params.count(), params.page() * params.count());
return $scope.data;
}
});
});
});
в течение нескольких часов, я попробовал самый правильный на этом примере (пользовательские функции фильтра)
http://codepen.io/christianacca/pen/yNWeOP
Но я не смог найти способ реализовать код примера для моего скрипта.
Я бы очень признателен за любые входные данные !!!!
Thanks