Backbonejs を使用してダッシュボード内の車両アプリケーションを構築しています。私のモデルの中には、HTTP を使用してサーバーに保持されるものもあれば、フレームワークの読み取り/書き込み機能を介してのみアクセスできるローカル ファイル システムに保持されるものもあります。
私の質問は、おそらくどちらのシナリオにも当てはまる可能性がありますが、特に私がファイル システムに永続化しているものに関するものです。
ご想像のとおり、オーディオの再生を処理する私の Player モデルには、Playlist オブジェクトが含まれています。アプリを閉じると、現在のプレーヤーの状態をファイル システムに保存して、次に起動したときに再開できるようにします。
save: function () {
sdk.write_json_file('player.json', this.toJSON());
}
toJSON は、含まれているモデルに対しても自動的に toJSON を呼び出していることがわかります。その結果、保存された JSON は次のようになります。
{
'playing':true,
'playlist_i': 2
'playlist':[
{
'stream_url': 'http://my.stream.com/blah',
'title': 'Title goes here',
'artist': 'Artist goes here',
...& other metadata
},
...and so on
]
}
したがって、オーバーライドされたフェッチ関数があります。
fetch: function () {
var p = sdk.read_json_file('player.js');
this.set(this.parse(p), {});
return this;
}
問題は、フェッチが呼び出されると、リセット イベントが発生し、プレーヤー ビューが更新されようとすることです。プレーヤー ビューは、プレーヤー モデルにプレイリスト オブジェクトが含まれていることを前提としています。技術的にはそうですが、この時点ではまだ Playlist インスタンスに解析されていないため、プレイリストは単なる JavaScript ハッシュです。
ファイルの読み取りから返されたデータに基づいて、モデル内のどこにプレイリスト インスタンスを作成するのか疑問に思っています。
免責事項:Backbonejs初心者