バックボーン アプリケーションで、モデルがフェッチされるタイミングに関するベスト プラクティスは何ですか? 以下の可能性が見えてきました。
- ビューはモデル fetch メソッドを呼び出します
- 他の JavaScript コードはフェッチ モデルを呼び出しますか? もしそうなら、このコードはいつ、どのような構造になりますか? これはバックボーンに欠けているコントローラーの概念ですか?
バックボーン アプリケーションで、モデルがフェッチされるタイミングに関するベスト プラクティスは何ですか? 以下の可能性が見えてきました。
いくつかのベスト プラクティス:
したがって、サーバーから正しいページがユーザーに提供されると、モデルとコレクションは既に配置されているはずです ( backbone.js docs の良い例) 。
var ExampleCollection = new Backbone.Collection();
ExampleCollection.reset(<%= @your_collection_data.to_json() %>); // Or whatever your server-side language requires you to do, this is a ruby example
アプリの初期化時に不要なモデルやコレクションは、いつでもフェッチできますが、ユーザーがそれらのモデルを使用する意思を示したときが論理的なタイミングだと思います。たとえば、ユーザーがボタンを押してモデル/コレクションが必要なビューを開く -> そのコレクションをフェッチし、ユーザーがモデルから保存されていない変更をクリアしたい -> サーバーからそのモデルをフェッチして、最後に保存されたモデルのステータスを取得する、など前方へ。通常、フェッチが発生する場所は、モデル/コレクションを「所有」するビューです。これは、ユーザーのアクションをモデルに中継し、モデルの状態をユーザーに表示するためです。
しかし、前述のように、Backbone.js は、モデルまたはコレクションを取得するタイミングについて厳密ではありません。アプリのどこでも実行できますが、必要な場合にのみ実行してください。
お役に立てれば!
標準にしたい場合は、モデルの変更イベントを初期化してリッスンするときにビューを一度レンダリングし、モデルが変更されるたびにビューを再レンダリングする必要があります。それだけです。(フェッチが完了したときにViewが何をする必要があるかについて)
そして、私が言った標準に従えば、model.fetch() を呼び出すために、フェッチがどこで呼び出されてもビューが更新されます。
一部の人々は、次のようなことを行うビューで load という名前のモジュールを持つことができます:
load : function(){
this.model.fetch();
}
他の人は、次のように外部フェッチ呼び出しを行うことができます:
var myModel = new YourModel();
var myView = new SomeView( {model : model} );
//Probably you could render with the default data in the while model is fetched
myView.render();
model.fetch();