基本上,我想知道集合是否更像文件夹(它们“物理上包含”模型)或播放列表(它们包含对模型的引用)。< / p>
如果它们像文件夹一样工作,是否有模仿播放列表功能的约定?
FWIW,我不是在为播放列表建模 - 我只是将它们用作比喻。
我发现几个问题的标题似乎与这个问题相似。但是当我调查时,我无法找到问题的明确答案。
答案 0 :(得分:6)
是的,模型可以同时驻留在多个集合中。
function log(msg) { $('body').append('<p>'+JSON.stringify(msg)+'</p>'); }
var m = new Backbone.Model({id: 1});
var c1 = new Backbone.Collection([m, {id: 2}]);
var c2 = new Backbone.Collection([m, {id: 3}]);
log(c1.toJSON());
log(c2.toJSON());
log(c1.get(1) === c2.get(1));
log(c1 === m.collection);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<script src="http://underscorejs.org/underscore-min.js"></script>
<script src="http://backbonejs.org/backbone-min.js"></script>
但请注意,当您将模型添加到另一个集合时,对集合m.collection
的引用不会更改。