我有JSON字段,如下所示,
"newId":5
我有我的搜索对象,
{aId: "5", aName: "Other"}
并编写了像
这样的过滤器$filter('filter')($scope.races, {newId:myObj.aId},true);
我得到一个空数组作为输出。我尝试添加toString()也没有用。我做错了什么。
答案 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);