Javascript angularjs资源查询错误解释数组

Javascript angularjs资源查询错误解释数组,javascript,angularjs,rest,resources,Javascript,Angularjs,Rest,Resources,我的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:

我的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”}]

不知何故,angular误解了这个值数组。我也尝试了同样的结果:

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
调用打印正确的值。

这绝对是

使用$resource时,如果isArray=false,则预期的响应是JSON对象:

{
   "foo" : "bar"
}
如果isArray=true,则预期的响应应该是对象的JSON数组:

在这种情况下,您有三种选择:

  • 使用$http而不是$resource
  • 使用$http的
    transformResponse
    功能(请参阅.$http)
  • 如果您可以控制API,则可以更改发送的响应的结构。根据语义,您可以发送对象数组(使用
    isArray=true
    ),也可以发送包含数组的对象(使用
    isArray=false
    )。哪个对你更有意义

  • 顺便说一下,这是angular 1.2.10。这很可能是您从服务器端发送响应的方式。你在那里用什么?例如
    [
        { "foo" : "bar" },
        { "faa" : "bah" }
    ]