我正在尝试制作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}开始 }]。
答案 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">