我的收藏集Playlist
包含Song
个模型,但我希望该集合具有某些属性,例如currentSong
,nextSong
等。
这就是我现在所拥有的:
var Playlist = Backbone.Collection.extend({
model: Song,
localStorage: new Backbone.LocalStorage('playlist-backbone'),
defaults: {
currentSong: null,
nextSong: null,
prevSong: null
},
initialize: function() {
setCurrentSong: function (song) {
this.currentSong = song;
this.trigger('currentSongChanged');
},
这导致了一些问题,我想知道什么是更好的方法来解决这个问题。来自Backbone Github,有人建议做
var Playlist = Backbone.Model.extend({ .. });
Playlist.songs = Backbone.Collection.extend({ .. });
所以我可以在播放列表上设置属性。这是最好的方式吗? 谢谢。
答案 0 :(得分:0)
如果我理解正确,您希望将某些属性设置为集合中添加的任何模型。
更简洁的方法是为"添加"事件:
var Playlist = Backbone.Collection.extend({
// ....
initialize:function(){
this.listenTo(this, "add" , this.addAttributes);
},
addAttributes: function(model, collection, options){
model.set({/*...*/});
}