Добавить новый пользовательский фильтр из ввода с NgTable - PullRequest
0 голосов
/ 15 апреля 2020

У меня есть вход, где пользователь вводит "preGEAS", который он хочет. Но если я попытаюсь добавить фильтр с этим значением через переменную $ scope, ничего не произойдет.

Я попробовал 2 решения: непосредственно в объявлении ngTableParams и другое в функции applyPreGEASFilter.

$scope.myData = [{  (properties) ... , preGEAS: "TEST VALUE" }, ... ];
$scope.filtrePreGEAS = "";

var initialParams = {   count : 10, filter: { preGEAS: $scope.filtrePreGEAS }   }; // initial page size

                            var initialSettings = {
                                counts : [],
                                paginationMaxBlocks : 13,
                                paginationMinBlocks : 2,
                                dataset : $scope.myData
                            };
                            $scope.myTable = new ngTableParams(initialParams, initialSettings);

//                      $scope.applyPreGEASFilter = function() {
//                          console.log("filter applied");
//                          $scope.tableRcdCalendrier.filter($scope.filtrePreGEAS);
//                      }

HTML


        <select class="form-control overloadDC" title="choose" ng-model="filtrePreGEAS" ng-change="applyPreGEASFilter()"
                ng-options="item for item in LISTE_PAR_GESTION_PREGEAS_DOMAINE">
<!--                <option value="null"></option>   -->                                                                
        </select>

<table id="idTable" ng-table="myTable" show-filter="true" class="table table-bordered table-condensed calAffairesImp" style="width: 100%">                              
            <tr>
                <th ng-repeat="header in Headers" class="rotated-text" ng-mouseover="mouseOver(header, $index)" ng-mouseleave="mouseOver('', null)" ng-class="{highlighted: (hoveredCol == $index)}">
                <div><span ng-bind-html="trust(header)"></span></div></th>
            </tr>

            <tr ng-repeat="row in $data"  > <!--   ::: ng-if="filtrePreGEAS == '' || row.preGEAS == filtrePreGEAS" :::  | filter: { preGEAS : filtrePreGEAS } -->
                <td ng-repeat="(key, value) in row" 
                    ng-if="key != 'preGEAS' && key != 'indexUnique'"
                    ng-mouseover="mouseOver(value, $index)" 
                    ng-mouseleave="mouseOver('', null)" 
                    ng-class="{highlighted: (hoveredCol == $index)}" 
                    data-title="key" 
                    filter="" sortable="" 
                    style="word-wrap: break-word; width: 5%;">
                    <div style="word-wrap: break-word; width: 100%; overflow: hidden;">
                        <!-- ng-if with inputs and selects -->
                    </div>
                </td>

            </tr>
        </table>

Я видел функцию GetData в Google, но я не хочу ничего менять на мой взгляд и вызывать регрессию.

1 Ответ

0 голосов
/ 16 апреля 2020

Я нашел решение: фильтромPreGEAS была строка вместо объекта.

$scope.filtrePreGEAS = { nameKey: "" };

Раскомментируйте applyPreGEASFilter () и все теперь работает.

...