2012-09-27 23 views
2

我已經用Tastypie-Django編寫了一個API,並且我想使用Backbone做一個網頁來更簡單地訪問模型。我創建了一個模型,並收集像這樣的骨幹:我如何訪問Tastypie JSON的Backbone集合元素?

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層的元件,一元和與所述元件對象陣列。我如何訪問對象數組元素?

如果我寫入abs.attributes這給我一個錯誤。

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

有人可以幫助我嗎?

謝謝!

回答

7

Backbone希望收到一組對象。

Tastypie返回「objects」屬性下的對象數組。

操縱API響應轉換格式骨幹推薦的方法是要通過收集的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; 
    } 
}); 

你也可以使用骨幹-Tastypie「插件」:https://github.com/PaulUithol/backbone-tastypie

+0

謝謝!這是一個奇妙的解決方案!這是完美的工作:) –