收藏的Backbone.js的集合(Backbone.js Collection of Collec

2019-06-24 01:43发布

我试图找出如何使Backbone.js的集合的集合。 我很新的骨干。 我有类似以下情况:

 +---------------+               +------------------+
 | Playlists     |               | Playlist         |
 |---------------|          0..* |------------------|
 |               +-------------->| Name             |
 |               |               |                  |
 |               |               |                  |
 +---------------+               +-------+----------+
                                         |
                                         |
                                         |0..*
                                         v
                                 +------------------+
                                 |  Track           |
                                 |------------------|
                                 | Name             |
                                 | Artist           |
                                 |                  |
                                 +------------------+

在这段代码类似于此:

var trackModel = Backbone.Model.extend({
    //trackdata
});

var playlistModel = Backbone.Collection.extend({
    model : trackModel,
    url   : "playlist"
});

var playlistsModel = Backbone.Collection.extend({
    url   : "playlists",
    model : playlistModel   //This pretty sure doesn't work like I want, because there is no model attribute for collections :S
});

不过我总是收到在JS控制台说法错误:

 Uncaught TypeError: Object [object Object] has no method '_validate'

当我尝试执行触发验证功能(如添加,获取,...)

这没有什么区别,如果我添加validate_validate功能的任何集合或模型。

我相信这是因为Backbone.js的不支持集合中的集合。 是否有工作的另一种方式?

更新:

这是它的外观,现在

var Track = Backbone.Model.extend({ 
    //trackdata 
}); 

var Tracks = Backbone.Collection.extend({ 
    model:Track; 
}); 

var Playlist = Backbone.Model.extend({ 
    //name  : ...
    tracks: new Tracks ()
}); 

var Playlists = Backbone.Collection.extend({ 
    url : "playlists", 
    model : Playlist 
});

Answer 1:

你会通过把你解决你的问题, Playlist从收集到的模型。 如果你想想看,一个Playlist很可能有其他的属性呢(如姓名),这不会是一个集合设定。

Playlists ,然后将是一个集Playlist模式(而不是集合),这应该没有错误工作。

var Track = Backbone.Model.extend({
    //trackdata
});

var Playlist = Backbone.Model.extend({
    model : Track
});

var Playlists = Backbone.Collection.extend({
    url   : "playlists",
    model : Playlist
});


文章来源: Backbone.js Collection of Collections