从过滤器重新找到错误的行为

时间:2015-12-02 14:20:09

标签: angularjs angular-filters

我试图通过其项目ID找到项目。为此,我使用这种过滤方法:

$scope.filteredPro = $filter('filter')( project.ProjectSummaryFilter, {"ProjectId" : "1" } );

但是当我收到结果时,ID为110的项目也会出现..在这种情况下,如果我仅使用10使用我的过滤器像这样:

$scope.filteredPro = $filter('filter')( project.ProjectSummaryFilter, {"ProjectId" : "10" } );

我正是从10的ID中得到结果。怎么解决这个问题?

当我按10过滤时,为什么我会收到包含ID为1的项目的结果?

2 个答案:

答案 0 :(得分:2)

要完全匹配,您应该尝试:

$scope.filteredPro = $filter('filter')( project.ProjectSummaryFilter, {"ProjectId" : "1" },true );
  

$ filter(' filter')(数组,表达式,比较器)

表达式:

  

对象:模式对象可用于过滤数组包含的对象的特定属性。例如{name:" M",phone:" 1"}谓词将返回一个项目数组,其属性名称包含" M"和包含" 1"

的财产电话

其中比较器值:

  

true:函数的简写(实际,预期){return angular.equals(actual,expected)}。这基本上是对预期和实际的严格比较。

答案 1 :(得分:0)

当您在过滤器中执行"ProjectId": "1"时,您将过滤所有项目ID,其中1作为字符串的一部分,因此可以填充' 1'和' 10'。

所以,替换

"ProjectId" : "1"

通过

"ProjectId" : 1 //integer