2012-09-06 52 views
0

我對Backbone.js非常陌生(但對Django並不是真的)。我已經創建了一個簡單的應用程序來與skeleton.js和Django(通過djangorestframework)一起玩,但我似乎無法將服務器數據加載到集合中。使用django將數據預加載到backbone.js集合

這裏的views.py

from djangorestframework.mixins import ResponseMixin 
from djangorestframework.renderers import DEFAULT_RENDERERS 
from djangorestframework.compat import View 
from djangorestframework.response import Response 

class WeekView(ResponseMixin, View): 
    """Gets and returns specific week, or current week if no week data provided.""" 
    renderers = DEFAULT_RENDERERS 

    def get(self, request): 
     response = Response(200, [{'day': x} for x in range(7)]) 
     return self.render(response) 

這裏的Backbone.js的代碼:

$(document).ready(function() { 
    /* Backbone scripts */ 
    var Day = Backbone.Model.extend({ 
    }); 

    var Week = Backbone.Collection.extend({ 
     model: Day, 
     url: '/week' 
    }); 

    var days = new Week; 
    days.fetch(); 
    days.each(function(day) { 
     console.log(day.get("day")); 
    }); 
}); 

控制檯沒有返回。

如果我登錄的日子變量本身,我得到的是這樣的:

> d 
    _byCid: Object 
    _byId: Object 
    length: 7 
    models: Array[7] 
    __proto__: x 

的觀點似乎是OK(調用/周返回類型{「天」的字典的一個很好的格式化的名單:號碼}。

我敢肯定,解決簡單的預加載到數據收集是一個非常簡單的,但我很爲難......

提前感謝!

回答

2

逸一個是獲取異步,所以你需要應對的事件(如「復位」),或者使用一個jQuery延遲功能(假設jQuery是用於請求):

days.on("reset", function(days){ 
    console.log(days)l 
}); 
days.fetch(); 

或者

$.when(days.fetch()).done(function(days){ 
    console.log(days); 
}).error(function(){ 
    console.error("oops"); 
});