2013-10-07 163 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