我如何从Tastypie JSON访问Backbone集合元素?

时间:2012-09-27 14:06:14

标签: django json backbone.js tastypie

我用Tastypie-Django编写了一个API,我想用Backbone做一个网页来更简单地访问模型。我在Backbone中创建了一个Model和一个这样的集合:

var Abstract =  Backbone.Model.extend({
    defaults : {
   }
});

var AbstractCollection = Backbone.Collection.extend({
   model: Abstract,
   url : "http://192.168.0.195/api/v1/abstract/?format=json"
});

它在视图中的获取方法就像这样:

var abs = new PocketsAbstractCollection();
abs.fetch({
     success: function (collection, response) {
         console.log(abs.length);
         console.log(abs.models);
      }
 });

我从这种形式收到JSON的问题是:

  {"meta": {"limit": 20, "next": null, "offset": 0, "previous": null, "total_count": 12}, "objects": [{ ... }]}

当我在属性中看到集合的模型时,我有2个元素,Meta和带有元素的Objects数组。如何访问“对象数组”元素?

如果我写abs.attributes,这会给我一个错误。

attributes: Object
  meta: Object
  objects: Array[12]
    0: Object
    1: Object
    2: Object
    3: Object
    4: Object
    .
    .
    .
   length: 12

有人可以帮助我吗?

谢谢!

1 个答案:

答案 0 :(得分:7)

Backbone希望接收一组对象。

Tastypie返回“objects”属性下的对象数组。

将API响应操作为Backbone所需格式的推荐方法是通过集合的parse function

var AbstractCollection = Backbone.Collection.extend({
   model: Abstract,

   url : "http://192.168.0.195/api/v1/abstract/?format=json",

   parse: function(response) {
      return response.objects;
   }
});

你也可以使用Backbone-Tastypie'插件':https://github.com/PaulUithol/backbone-tastypie