集合中的默认属性

时间:2014-04-17 21:23:23

标签: javascript backbone.js

我的收藏集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');
  },

这导致了一些问题,我想知道什么是更好的方法来解决这个问题。来自Backbone Github,有人建议做

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

所以我可以在播放列表上设置属性。这是最好的方式吗? 谢谢。

1 个答案:

答案 0 :(得分:0)

如果我理解正确,您希望将某些属性设置为集合中添加的任何模型。

更简洁的方法是为"添加"事件:

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