使用JSON对象自动填充Backbone.Collection

时间:2011-12-26 17:23:48

标签: json backbone.js

//Model
var Dog = Backbone.Model.extend({
    name:'',
    breed:''

});


//Collection
var Dogs = Backbone.Collection.extend({
    model : Dog,
    url : '/dogs'

    parse : function(res) 
    {
        alert('response' + res);
    return res;
    }

});

这是我从服务器收到的使用Jersey实现的JSON目标。 我从Server返回一个DogModel列表,它被转换为JSON

@Produces(MediaType.APPLICATION_JSON)

{"DogModel":[{"name":"Jane","breed":"Great Dane"},
{"name":"Rocky","breed":"golden Retriver"},
{"name":"Jim","breed":"Lab"}]}

想知道我还没有正确理解Collection及其url属性的用法。 我的假设是,当在Collection上调用fetch时,它将从服务器获取狗的详细信息并填充该集合。

我确实得到了如上所述的回复,但未按预期填充该集合。

如何使用集合自动填充模型列表? 我是否需要处理JSON对象的表示?

帮助感谢!!!

1 个答案:

答案 0 :(得分:11)

parse函数需要返回狗的数组。因此,您可以按如下方式更新代码。

parse : function(res) 
{
    alert('response' + res);
    return res.DogModel;
}

在旁注中,您希望在defaults哈希上声明模型的默认属性值,如下面的代码所示(see documentation

var Dog = Backbone.Model.extend({
  defaults: {    
    name:'',
    breed:''
  }
});