0

これを行う最善の方法を理解するのに苦労しています。初期化メソッドでいくつかのコレクションをインスタンス化するモデルがあります。そのモデルをインスタンス化した直後に、これらのコレクションのいずれかでモデルを取得する必要がありますが、そのモデルを取得しようとすると、そのモデルが利用できないように見えるため、代わりに「未定義」になります。これは私が持っているものです:

var App = Backbone.Model.extend({
    initialize: function() {
        this.users = new Users();
    }
});
app = new App();
someUser = app.users.get("someuserID"); // -> undefined

しかし、もしそうなら:

var App = Backbone.Model.extend({
    initialize: function() {
        this.users = new Users();
    }
});
app = new App();
setTimeout(function(){
    someUser = app.users.get("someuserID"); // -> user instance
},3000);

アプリの初期化メソッドにを追加してthis.trigger("loaded")から、そのイベントをリッスンしようとしましたが、イベントはトリガーされません。そのようです:

var App = Backbone.Model.extend({
    initialize: function() {
        this.users = new Users();
        this.trigger("loaded");
    }
});
app = new App();
app.on("trigger",function(){ // -> never actually triggers
    someUser = app.users.get("someuserID");
});

何か案は?

Users コレクションは、安静な API からユーザーを正しく取得していることに注意してください。

ありがとうございました、

ルイス

4

1 に答える 1

1

バックボーンのドキュメントに従って、コレクションが を完了すると、イベント.fetchが発生します。ここにはクラスを含めていませんが、それが単なるコレクションであり、コレクションのラッパーではないと仮定すると、次のようになります。resetUsers

var App = Backbone.Model.extend({
    initialize: function() {
        this.users = new Users();
    }
});
app = new App();
app.users.on('reset',function() { var someUser = app.users.get("someuserID"); });
于 2012-05-18T22:28:47.003 に答える