angularjs过滤器使用带有多个过滤器的比较器

时间:2017-12-15 17:15:46

标签: javascript angularjs angularjs-filter

我正在尝试制作angularjs过滤器。我正在过滤三个属性。前两个是比较器假,最后一个是比较器真。如果没有自定义过滤器,这可能吗?我在下面尝试但是它会抛出一个错误。

|

 filter :
     {
        'PatientFullName' : vm.headerService.searchText,
        'Archived' : vm.headerService.Archived,
        'PhysicianID' : {vm.headerService.selectedPhysician.PhysicianID,true}
     }

这是整个html

<div class="col-sm-6 col-md-4" ng-repeat="patient in vm.patientlist | orderBy: vm.headerService.currentSort.orderBy:vm.headerService.currentSort.sortDescending
     | filter :
     {
        'PatientFullName' : vm.headerService.searchText,
        'Archived' : vm.headerService.Archived,
        'PhysicianID' : {vm.headerService.selectedPhysician.PhysicianID,true}
     }">

这是错误

  

angular.js:14794错误:[$ parse:syntax]语法错误:令牌&#39;。&#39;是   意外,期待[}]在表达式的第263行   [vm.patientlist |排序依据:   vm.headerService.currentSort.orderBy:vm.headerService.currentSort.sortDescending        |过滤器:        {           &#39; PatientFullName&#39; :vm.headerService.searchText,           &#39;存档&#39; :vm.headerService.Archived,           &#39; PhysicianID&#39; :{vm.headerService.selectedPhysician.PhysicianID,true}        从[.headerService.selectedPhysician.PhysicianID,true}开始        }]。

1 个答案:

答案 0 :(得分:1)

{vm.headerService.selectedPhysician.PhysicianID,true}不是正确的对象。要按comparator的不同值执行过滤,您可以进行链接过滤:

<div class="col-sm-6 col-md-4" ng-repeat="patient in vm.patientlist | orderBy: vm.headerService.currentSort.orderBy:vm.headerService.currentSort.sortDescending
 | filter :
 {
    'PatientFullName' : vm.headerService.searchText,
    'Archived' : vm.headerService.Archived
 }
 | filter : 
{        
    'PhysicianID' : vm.headerService.selectedPhysician.PhysicianID
}: true">

但最好将其重写为控制器的方法。它将提高可读性:

<div class="col-sm-6 col-md-4" 
 ng-repeat="patient in vm.patientlist | 
            orderBy: vm.headerService.currentSort.orderBy
                   : vm.headerService.currentSort.sortDescending
           |filter : vm.myFilteringMethod">