为什么backbonejs在模型中创建了大量的集合,我不知道它什么时候停止。
从http://backbonetutorials.com/what-is-a-collection/获取此示例。如果您查看控制台并继续打开d对象,其中始终会有一个“集合”对象,它只会重复重复同一个对象。
我不知道这是一个错误还是其他什么,但我不确定这是否正常。
有人请赐教。感谢。var Song = Backbone.Model.extend({
defaults: {
name: "Not specified",
artist: "Not specified"
},
initialize: function(){
console.log("Music is the answer");
}
});
var Album = Backbone.Collection.extend({
model: Song
});
var song1 = new Song({ name: "How Bizarre", artist: "OMC" });
var song2 = new Song({ name: "Sexual Healing", artist: "Marvin Gaye" });
var song3 = new Song({ name: "Talk It Over In Bed", artist: "OMC" });
var myAlbum = new Album([ song1, song2, song3]);
console.log( myAlbum.models ); // [song1, song2, song3]
@ryan
是的,我知道模型可能包含对其集合的引用。但是,拥有这种似乎没有尽头的链式对象有点奇怪。对象树是这样的:
[d, d ,d]
0 > d
> collection
> models
0 > d
> collection
> models
0 > d
> collection
> models
0 > d
...
keeps on and on and on
为什么会这样?
答案 0 :(得分:3)
没有错。它们只是参考。一旦将Song
添加到该集合中,每个Album
都会包含对其集合collection -> user
的引用。
更新。也许this simple example会帮助你理解没有异常。这基本上就是骨干网正在做的事情。它的唯一目的是让您轻松导航user -> collection
或导航var site = { name: 'stackoverflow' };
var users = [{ name: 'pneftali' }];
for (var i = 0; i < users.length; i++) {
users[i].site = site;
}
site.users = users;
console.log(site.users);
。
{{1}}
答案 1 :(得分:2)
每个model
都引用了collection
。每个collection
都必须引用其models
。 Javascript仅包含对集合的引用。开发人员工具栏只显示参考的详细信息。它们实际上并不相互嵌套。有相同的对象。您可以从模型cid
确认不会改变链条。