2015-10-15 81 views
2

所需的輸出我有JSON場像下面,

"newId":5 

我有一個像我的搜索對象,

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

,並寫了過濾器一樣,

$filter('filter')($scope.races, {newId:myObj.aId},true); 

我得到一個空數組作爲輸出。我試圖添加toString()也沒有工作。我做錯了什麼?

+0

它工作時,我把aId作爲整數({aId:5,aName:「Other」}) –

回答

1

你有兩個解決方案:1 爲了使數據類型相同的兩個領域:

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

注:援助= 5(不是「5」)。

2到編寫自定義比較

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

注意事項:a == B(不是=== B)。

+0

但我在文檔中看到Primitive值被轉換爲字符串。所以,如果我做toString()它應該工作na。但它也沒有。 – Hacker

+0

你可以通過「像s,{」newId「:myObje.aId}, –

+0

環繞newId但我們正在比較值正確,而不是鍵... – Hacker

0

濾料的$scope.races必須是一個數組,所以從JSON你的反應必須添加到一個數組,在這種情況下,您的代碼將工作

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

@ Aleksandar Gajic - 是它的相同結構。但它不起作用 – Hacker

+0

這裏是jsfiddle鏈接http://jsfiddle.net/cajg4yxz/1/,你可以看到它在這個例子中工作 –

+0

,因爲aId和newId不是相同的數據類型。 –

0

我做你的解決方案,我認爲這是工作正常。問題是在你的過濾器:

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

Solution