2013-10-07 161 views
1

我使用$ http獲取用戶集合。來自服務器的原始響應是這樣的......用於數組對象的角度JSON過濾器

[{"id":2,"name":"John Doe","email":"[email protected]"}] 

在登錄成功回調數據參數顯示此...

[Object, each: function, eachSlice: function, all: function, any: function, collect: function…] 
    0: Object 
    $$hashKey: "004" 
    email: "[email protected]" 
    id: 2 
    name: "John Doe" 
    __proto__: Object 
    length: 1 
__proto__: Array[0] 

不夠好。看起來像$ http已經將原始JSON解序列化爲一個JavaScript對象。

接下來,我將數據分配到$範圍變量,成功回調內,爲了執行在瀏覽器中的一些調試...

現在
$scope.debug = data; 

,在我看來,我想顯示這作爲漂亮的JSON來調試。

<pre>{{debug | json}}</pre> 

而且我得到這個...

"[{\"id\": 2, \"name\": \"John Doe\", \"email\": \"[email protected]\", \"$$hashKey\": \"004\"}]" 

我試圖讓這樣的事情...

[ 
    { 
    "id": 2, 
    "name": "John Doe", 
    "email": "[email protected]", 
    "$$hashKey": "004" 
    } 
] 

我也試圖字符串化在控制器中的JavaScript數組...

$scope.debug = JSON.stringify(data, true); 

而不是使用t他過濾...

<pre>{{debug}}</pre> 

,但我得到了相同的結果,除了$$ hashKey已被刪除...

"[{\"id\": 2, \"name\": \"John Doe\", \"email\": \"[email protected]\"}]" 

如果我只是數組$範圍在分配中的第一項,並使用JSON過濾器,它工作正常...

$scope.debug = data[0]; 

在我看來......

<pre>{{debug | json}}</pre> 

結果...

{ 
    "id": 2, 
    "name": "John Doe", 
    "email": "[email protected]" 
} 

我知道有其他的方法來得到我想要的東西。我只是想明白髮生了什麼。

謝謝!

+0

你爲什麼不只是使用控制檯? O.o – thescientist

+0

謝謝。我正在使用控制檯,而且工作正常。但是,我想深入瞭解問題的根源,而不僅僅是解決問題。我想明白爲什麼它不像我所期望的那樣工作。要麼它工作正常,我誤解它應該如何工作,或者我正確理解應該如何工作,但是我做得有點錯誤,或者我理解它應該如何工作,並且正確地做到了這一點,但是在過濾器代碼中存在一些錯誤。只是想學習。 – Kevin

回答

1

你應該解析json而不是stringify。

試試這個:

$scope.debug = JSON.parse(data)

Working Fiddle

+0

感謝Beteraraba,我試過了,但問題是,在$ http get調用的成功回調中,json已經被解析爲一個JavaScript數組對象。 – Kevin