Фильтр AngularJS по свойству с использованием Ng-Repeat НЕ работает

У меня есть ng-repeat, и он успешно повторяет данные. Теперь я хочу отфильтровать результаты по свойствам, которые я ввожу в поле ввода. Однако он либо вообще не работает, либо, если я пробую разные вещи, иногда НИЧЕГО не отображается вообще. Как вы можете видеть, это незавершенная работа, и я перепробовал кучу разных вещей: поэтому мой код несовместим! Пожалуйста, воздержитесь от комментариев по этому поводу, так как это НЕ КОНСТРУКТИВНО!

             <tr ng-if="vm.detail == true">
                    <th><input type="text" ng-model="filter.TrusteeCustNum" /></th>
                    <th><input type="text" ng-model="filter.MchNumber" maxlength="4" class="input-    sm form-control" /></th>
                    <th><input type="text" ng-model="filter.ContractNumber" class="input-sm form-control" /></th>
                    <th><input type="text" ng-model="vm.PlanCode" maxlength="10" class="input-sm form-control" /></th>
                    <th><input type="date" ng-model="filter.PlanStatusDate" /></th>
                    <th><input type="text" ng-model="filter.PlanStatus" /></th>
                    <th><input type="date" ng-model="filter.PlanEffectiveDate" /></th>
                </tr>
            </thead>
            <tbody>
                <tr ng-repeat="plan in vm.PlanCodeInfo | filter: vm.PlanCode | orderBy:     vm.PlanCode" ng-if='vm.detail == true && vm.detailPlanCode'>
                    <td> {{plan.TrusteeCustNum}}</td>
                    <td>{{plan.CustomerNumber}}</td>
                    <td>{{plan.ContractNumber}}</td>
                    <td>{{plan.PlanCode }}</td>
                    <td>{{plan.PlanStatusDate | date: 'yyyy-MM-dd'}}</td>
                    <td>{{plan.PlanStatus}}</td>
                    <td> {{plan.PlanEffectiveDate | date: 'yyyy-MM-dd'}}</td>
                    <td><a href="">Rates</a></td>
                    <td><a href="">State Availability</a></td>
                </tr>

Как я могу получить ЛЮБОЙ фильтр для фильтрации результатов по свойствам, которые я использую, и сортировать их по этим указанным свойствам?


person user1789573    schedule 22.10.2014    source источник


Ответы (3)


Если вы хотите фильтровать по свойству PlanCode, тогда фильтр должен быть объектом с указанным свойством:

ng-repeat="plan in vm.PlanCodeInfo | filter:filterObj"

Где в HTML вы определяете ввод фильтра с помощью соответствующего ngModel. Конечно, вы можете использовать несколько свойств для фильтрации. Вот пример фильтров PlanCode и PlanStatusDate:

<input type="text" ng-model="filterObj.PlanCode">
<input type="text" ng-model="filterObj.PlanStatusDate">
person dfsq    schedule 22.10.2014
comment
я просто печатал это - person user3271518; 22.10.2014
comment
я пробовал g-repeat=plan в vm.PlanCodeInfo | filter: фильтровать в первую очередь. Однако это не позволит ничего отображать. Я просто обошёл это с помощью этой строки: ‹tr ng-repeat=contract in vm.ContractInfo | фильтр: filter.TrusteeCustNum | фильтр: filter.MchNumber| фильтр: filter.ContractNumber| фильтр: filter.PlanCode| filter: filter.PlanEffectiveDate ng-if=vm.detail == true && vm.detailContract == true› - person user1789573; 22.10.2014

Существует ли vm.PlanCode в вашей $scope? Вы пытались заменить его простым именем, например «planCode», и добавить $scope.planCode = ''; к вашему $scope?

Просто посмотреть, есть ли разница?

Было бы полезно увидеть вашу модель/прицел.

person Marc Schlechter    schedule 22.10.2014
comment
Да, я пробовал это. Кроме того, я знаю, что planCode находится в моей области, так как я отлаживал его и смотрел, что было в $scope. Однако мне интересно, нельзя ли применить фильтр к строке? Должен ли он быть на теге ‹tbody› вместо этого? - person user1789573; 22.10.2014

filter: filter.PlanCode — это код, который мне нужен для фильтрации по planCode. Кроме того, я должен изменить модель ng на filter.PlanCode.

person user1789573    schedule 22.10.2014