Angularjs 从过滤器结果中发现错误行为

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

我试图通过项目ID查找项目。为此,我使用以下过滤方法:

$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”}
-因此,测试name
M
或name
S
我想您需要为此编写一个自定义筛选函数
$scope.filteredPro = $filter('filter')( project.ProjectSummaryFilter, {"ProjectId" : "1" },true );