0

私は Backbone.js に非常に慣れていません (ただし、実際には Django ではありません)。backbone.js と Django を (djangorestframework 経由で) 操作する単純なアプリケーションをセットアップしましたが、サーバー データをコレクションにロードできないようです。

これが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"));
    });
});

コンソールは何も返しません。

days 変数自体をログに記録すると、次のようになります。

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

ビューは問題ないようです (/week を呼び出すと、タイプ {'day': number} の適切にフォーマットされた辞書のリストが返されます。

単純なデータをコレクションにプリロードするソリューションは非常に単純なものだと確信していますが、困惑しています...

前もって感謝します!

4

1 に答える 1

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");
});
于 2012-09-06T23:48:43.730 に答える