私はバックボーンから始めて、最近質問に出くわしました。私が取り組んでいるサンプル アプリケーションは、ある種のプレイリストです。モデルの「曲」と、いくつかの曲を含むコレクションの「プレイリスト」があります。
プレイリスト コレクションのデータは、複数のビューで利用できる必要があります。したがって、私の考えは、グローバルなアプリケーション変数を持つことであり、これらの変数の 1 つがプレイリスト コレクションになる可能性があります。
このようにして、アプリの初期化で曲をフェッチし、アプリのすべてのビューでデータにアクセスできます。
以下は私が現在行っていることです
define(
[
'jQuery',
'Underscore',
'Backbone',
'collections/songlist'
],
function ($, _, Backbone, SonglistCollection)
{
var PlaylistView = Backbone.View.extend({
// properties
el: '#playlist',
collection: new SonglistCollection(),
/**
* Initialize
*/
initialize: function()
{
// load songs
this.collection.on( 'reset' , this.render, this );
this.collection.fetch();
},
/**
* Render
*/
render: function()
{
// loop through the collection and update the view
},
...
);
}
);
そしてこれが私のコレクションです
define(
[
'Underscore',
'Backbone',
'models/song'
],
function (_, Backbone, songModel)
{
var songList = Backbone.Collection.extend({
model: songModel,
url: 'song'
});
return songList;
}
);
ご覧のとおり、コレクションの新しいインスタンスを作成し、プレイリスト コレクションのデータを使用するすべてのビューのデータを再取得する必要があります。
私はrequire.jsを使用しているため、グローバル変数の作成方法について少し迷っています。私がそれをするのが好きな方法は、例えばです。MyApp.collections.Playlist を作成しますが、これを AMD (require.js) で実現する方法がわかりません。
いくつかのリソースは既に見つけましたが、まだ迷っています / 混乱しています / ...
- 異なる amd モジュール間でリソースを共有する
- http://www.alexrothenberg.com/2011/02/11/backbone.js-makes-building-javascript-applications-fun.html
よろしくお願いします!