我的REST服务器从/blog
返回以下内容:
["hello","yo"]
这是我的整个angularjs应用程序:
var myapp = new angular.module("myapp", ["ngResource"]);
myapp.controller("MainCtl", ["$scope", "$resource", function($scope, $resource){
var Blog = $resource("/blog/:entry", {entry: '@entry'});
$scope.entries = Blog.query();
}]);
当我将{{entries}}
放在html的某处时,我看到了这一点:[{"0":"h","1":"e","2":"l","3":"l","4":"o"},{"0":"y","1":"o"}]
不知何故,角度错误解释了这个值数组。我也尝试了完全相同的结果:
myapp.controller("MainCtl", ["$scope", "$resource", function($scope, $resource){
var Blog = $resource("/blog/:entry", {entry: '@entry'}, {
list: {
url: "/blog",
method: "GET",
isArray: true,
transformResponse: function(data, headers) {
var h = ["hello","yo"];
console.log(h);
return h;
}
}
});
$scope.entries = Blog.list();
}]);
有趣的是,console.log
调用会打印正确的值。
答案 0 :(得分:0)
这绝对是One dimensional array of strings being parsed to 2d by angular resource
的副本使用$ resource时,如果isArray = false,则预期响应是JSON对象:
{
"foo" : "bar"
}
如果isArray = true,则预期的响应应该是对象的 的JSON数组:
[
{ "foo" : "bar" },
{ "faa" : "bah" }
]
在这种情况下,您有三种选择:
transformResponse
功能(请参阅http://docs.angularjs.org/api/ng。$ http)isArray=true
),或者包含数组的对象(使用isArray=false
)。无论哪个对你更有意义。