2

Tastypie-Djangoを使用してAPIを作成しましたが、Backboneを使用してWebページを作成し、モデルに簡単にアクセスできるようにしたいと考えています。バックボーンで次のようなモデルとコレクションを作成しました。

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つの要素があります。1つはメタで、もう1つは要素を含むオブジェクト配列です。オブジェクトの配列要素にアクセスするにはどうすればよいですか?

abs.attributesと書くと、エラーが発生します。

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

誰かが私を助けることができますか?

ありがとう!!

4

1 に答える 1

7

バックボーンは、オブジェクトの配列を受け取ることを期待しています。

Tastypie は、"objects" プロパティの下にオブジェクトの配列を返します。

バックボーンが必要とする形式に API 応答を操作する推奨される方法は、コレクションのparse関数を使用することです。

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

于 2012-09-27T14:59:38.980 に答える