$ filter没有在angularjs中获得所需的输出

时间:2015-10-15 07:01:25

标签: angularjs angular-filters

我有JSON字段,如下所示,

"newId":5

我有我的搜索对象,

{aId: "5", aName: "Other"}

并编写了像

这样的过滤器
$filter('filter')($scope.races, {newId:myObj.aId},true);

我得到一个空数组作为输出。我尝试添加toString()也没有用。我做错了什么。

3 个答案:

答案 0 :(得分:1)

你有两个解决方案: 1-要使两个字段具有相同的数据类型:

$scope.races = [{"newId":5}]
var myObje = {aId: 5, aName: "Other"};
$filter('filter')($scope.races, {newId:myObje.aId},true);

注意:aId = 5(不是“5”)。

2-编写自定义比较器

$filter('filter')($scope.races, {newId:myObje.aId},function(a,b){return a == b;});

注意:a == b(不是=== b)。

答案 1 :(得分:0)

过滤器期望$scope.races必须是一个数组,因此必须将JSON的响应添加到数组中,在这种情况下,您的代码才能正常工作

var myObj = {aId: "5", aName: "Other"};
$scope.races = [{newId: 5}]
var result = $filter('filter')($scope.races, {newId: myObj.aId}, true);

答案 2 :(得分:0)

我为你做了一个解决方案,我觉得它很好用。问题在于您的过滤器:

$scope.result = $filter('filter')($scope.races, {
    newId: +$scope.myObj.aId //parse $scope.myObj.aId to int
}, true);

Solution