0

現在、BackboneJS を使用して、バックボーン モデルを使用してデータベースからデータを取得しています。

問題は、アプリがリセット イベントを発生させず、フェッチが適切に実行されていてもデータが画面に表示されないことです。コンソールで app.messages.toJSON() を実行すると、要求どおりにデータが返されます。

それについて何か考えはありますか?これが私のコードです

var app = window.app = {};

// APP HERE

// Model

app.Message = Backbone.Model.extend({
    url : 'messages'
});

app.message = new app.Message;

// Collection

app.Messages = Backbone.Collection.extend({
    model : app.Message,
    url : 'messages'
});

// Views

app.messages = new app.Message(); 
app.messages.fetch();

app.ListView = Backbone.View.extend({
    template : Handlebars.compile($('#template-list').html()),

    initialize : function(){
        _.bindAll(this, 'render');
        //this.collection.on('reset', this.render); 
    },

    render : function(){
        this.$el.html(this.template({
            collection : this.collection.toJSON()
        }));
        return this;
    }

});

私はそれに歯を折っています。

サイモン

編集

このすべてのコードの後、私は

app.Router = Backbone.Router.extend({
    routes: {
        '*path' : 'home'
    },
    home: function(){
        this.views = {};
        this.views.list = new app.ListView({
            collection : app.messages
        });
        $('#list-shell').empty().append(this.views.list.render().el);
    }
});

app.router = new app.Router();
Backbone.history.start({pushState : true});
Backbone.emulateJSON = true;
4

1 に答える 1

0

app.messages = new app.Message();これは、質問を書いているときにあなたが犯した間違いにすぎないと思います。

質問自体については、Backbone 1.0 を使用している場合、クビreset flagが必要な場合は を使用する必要があります。 さらに、追加したコードが実際に最初のコードのに​​ある場合は、Router を作成する前にデータを取得しているため、ビュー. 取得メソッドが非同期であっても、ここで行っていることを制御していません。reset event

于 2013-04-08T14:41:30.567 に答える