我正在使用AngularJS和RESTAPI,我能够以JSON格式获取从服务器发送的客户数据。我的Angular代码段如下:
app.factory("services", ['$http', function($http) {
var serviceBase = '/api/album';
var obj = {};
obj.getCustomers = function(){
return $http.get(serviceBase);
};
return obj;
}]);
app.controller('listCtrl', function ($scope, services) {
services.getCustomers().then(function(data){
alert(JSON.stringify(data.data));
$scope.customers = data.data;
});
});
这是我的JSON数据:
{
"data": [
{
"id": "1",
"artist": "Gotye75",
"title": "Making Mirrors7"
},
{
"id": "100",
"artist": "ytttt5",
"title": "1231"
},
{
"id": "101",
"artist": "65",
"title": "565444555"
},
{
"id": "102",
"artist": "6",
"title": "6"
},
{
"id": "103",
"artist": "y",
"title": "yy"
},
{
"id": "104",
"artist": "ty",
"title": "yt"
},
{
"id": "109",
"artist": "ytrer",
"title": "yt"
}
]
}
如果我的JSON不包含“数据”,我可以在表中显示JSON数据。但是,如果我的jSON数据带有“data”标头,则无法显示。我在问,Angular中解析JSON对象的解决方案是什么。
例如,如果它在BackboneJS中,我可以简单地执行
parse: function (response) {
//alert(JSON.stringify(response.data));
return response.data;
}
我如何在Angular中做到这一点?
答案 0 :(得分:3)
$http
使用响应对象解析其承诺。通过响应对象的data属性访问数据。所以要到达阵列,你必须使用
$scope.customers = data.data.data;
使用$http
便捷方法增强了 .success()
的承诺,该方法可以解开响应对象...
services.getCustomers().success(function(data){
alert(JSON.stringify(data.data));
$scope.customers = data.data;
});
答案 1 :(得分:1)
我通过
解决了这个问题app.controller('listCtrl', function ($scope, services) {
services.getCustomers().then(function(data){
//notice that i added the third data
$scope.customers = data.data.data;
});
});