我以Backbone開始,最近偶然發現了一個問題。我正在處理的示例應用程序是某種播放列表。我有一個模型'歌'和一個集合'播放列表',包含幾首歌曲。骨幹共享集合
播放列表集合的數據應該在多個視圖中可用。所以我的想法是有全局應用程序變量,其中一個變量可能是播放列表集合。
這樣一來,我可以與應用程序的初始化取的歌曲,並在應用程序的每個視圖訪問數據。
下面是我在做什麼當前
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)實現這一點。
一些資源,我已經發現了,但我還是輸掉/困惑/ ...
- Share resources across different amd modules
- http://www.alexrothenberg.com/2011/02/11/backbone.js-makes-building-javascript-applications-fun.html
非常感謝提前!
對你發現的第一個問題的答案都是合理的。設置一個'app_registry'依賴關係來保存你的全局狀態,或者在你初始化的時候用'window.App = {...}'手工完成。 –