Angularjs 从过滤器结果中发现错误行为
我试图通过项目ID查找项目。为此,我使用以下过滤方法:Angularjs 从过滤器结果中发现错误行为,angularjs,angular-filters,Angularjs,Angular Filters,我试图通过项目ID查找项目。为此,我使用以下过滤方法: $scope.filteredPro = $filter('filter')( project.ProjectSummaryFilter, {"ProjectId" : "1" } ); 但是当我得到结果时,id为1和10的项目也会出现。。在这种情况下,如果我仅使用10使我的过滤器如下所示: $scope.filteredPro = $filter('filter')( project.ProjectSummaryFilter, {"Pr
$scope.filteredPro = $filter('filter')( project.ProjectSummaryFilter, {"ProjectId" : "1" } );
但是当我得到结果时,id为1
和10
的项目也会出现。。在这种情况下,如果我仅使用10
使我的过滤器如下所示:
$scope.filteredPro = $filter('filter')( project.ProjectSummaryFilter, {"ProjectId" : "10" } );
我正是从10
的id中得到结果的。如何解决这个问题
当我按1
进行筛选时,为什么我会得到一个包含id为10
的项目的结果?当您执行“ProjectId”时:“1”
在您的筛选中,您正在筛选字符串中包含1的所有项目id,从而填充“1”和“10”的大小写
那么,替换
"ProjectId" : "1"
借
要获得精确匹配,您应尝试:
$scope.filteredPro = $filter('filter')( project.ProjectSummaryFilter, {"ProjectId" : "1" },true );
$filter('filter')(数组、表达式、比较器)
其中表达式:
对象:模式对象可用于过滤数组包含的对象的特定属性。例如{name:“M”,phone:“1”}谓词将返回一个项目数组,其中属性名称包含“M”,属性phone包含“1”
其中,比较器值:
true:函数(实际,预期){return angular.equals(实际,预期)}的缩写。这本质上是对预期和实际的严格比较
在硬代码的情况下,它可能是可行的,那么动态声明怎么样,而不是像
1
var st=“10”
作为一个建议,我想通过{name:“M”,phone:“1”}{name:“S”,phone:“1”}
-因此,测试nameM
或nameS
我想您需要为此编写一个自定义筛选函数
$scope.filteredPro = $filter('filter')( project.ProjectSummaryFilter, {"ProjectId" : "1" },true );