0

私はこれに対する解決策を探しましたが、うまくいくものを見つけることができません。

注:Backbone.syncメソッドをグローバルにオーバーライドしています。

セッションモデルをインスタンス化するとき、いくつかの属性をモデルに渡します。これらは、ご想像のとおり、を介して「取得可能」である必要がありますmySessionInstance.get('someAttribute')。セッションモデルはthis.fetch()、initializeメソッド内で呼び出します。カスタムBackbone.syncメソッドは、いくつかのセッション属性にアクセスする必要がありますが、実行すると、そのインスタンスに「get」メソッドが存在しないというエラーが表示されます。

完全に初期化される前に、セッションインスタンスの.getにアクセスしようとしたかのようです。それを修正する方法について何かアイデアはありますか?モデルの「準備完了」または「初期化」イベントがあったらいいのにと思います。そうすれば、それを聞いて、モデルの初期化が本当に完了したときにのみ特定のことが起こるようにすることができます。

ありがとう、

ルイス

4

1 に答える 1

0

モデルfetchがトリガーするイベントは2つあります。

  1. "change"何かが変更された場合(つまり、サーバーから何かが戻ってきた場合)にイベントがトリガーされます。Afetchはほとんどの場合、set結局のところAJAX成功ハンドラーによって呼び出されます。
  2. モデルがサーバーと同期される"sync"とイベントがトリガーされます。同期にはフェッチが含まれます。ドキュメントはこれfetchについて明確ではありませんが、ソースで簡単に確認でき、マスターイベントリストに記載されています。

この"change"イベントは、おそらく一般的にはより有用であり、モデルを使用する準備ができていることを示すのに役立つはずです。

1回限りの通知が必要な場合は、 :successからのコールバックを使用できます。fetch

model.fetch({
    success: function(model, response) {
        // ...
    }
});
于 2012-07-18T17:46:25.587 に答える