kri*_*ial 49 javascript backbone.js
我正在试图弄清楚如何使用backbone.js创建集合集合.我对骨干很新.我有类似以下情况:
+---------------+ +------------------+
| Playlists | | Playlist |
|---------------| 0..* |------------------|
| +-------------->| Name |
| | | |
| | | |
+---------------+ +-------+----------+
|
|
|0..*
v
+------------------+
| Track |
|------------------|
| Name |
| Artist |
| |
+------------------+
Run Code Online (Sandbox Code Playgroud)
在代码中,这看起来类似于:
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
});
Run Code Online (Sandbox Code Playgroud)
但是我总是在js控制台中收到错误说:
Uncaught TypeError: Object [object Object] has no method '_validate'
Run Code Online (Sandbox Code Playgroud)
当我尝试执行一个触发验证的函数(如add,fetch,...)
如果我将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
});
Run Code Online (Sandbox Code Playgroud)
Rob*_*ska 30
您可以通过将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
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
19213 次 |
| 最近记录: |