2014-04-17 57 views
0
屬性

我收集Playlist持有Song模型,但我想收集有一定的屬性,如currentSongnextSong默認在收集

這就是我現在所擁有的:

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'); 
    }, 

這導致了一些問題,我想知道什麼可能是更好的方法來處理這個問題。從骨幹Github,有人建議做

var Playlist = Backbone.Model.extend({ .. }); 
Playlist.songs = Backbone.Collection.extend({ .. }); 

所以我可以在播放列表上設置屬性。它會是最好的方式嗎? 謝謝。

回答

0

如果我理解正確,您希望將某些屬性設置爲任何添加的模型到您的集合。

一個清潔的辦法是實現一個處理程序的「添加」事件:

var Playlist = Backbone.Collection.extend({ 
// .... 
    initialize:function(){ 
    this.listenTo(this, "add" , this.addAttributes); 
    }, 
    addAttributes: function(model, collection, options){ 
     model.set({/*...*/}); 
    }