Ampersand.js(或Backbone.js)中的模型可以同时存在多个集合中吗?

时间:2014-12-09 16:25:56

标签: javascript backbone.js ampersand.js

基本上,我想知道集合是否更像文件夹(它们“物理上包含”模型)或播放列表(它们包含对模型的引用)。< / p>

如果它们像文件夹一样工作,是否有模仿播放列表功能的约定?


  • FWIW,我不是在为播放列表建模 - 我只是将它们用作比喻。

  • 我发现几个问题的标题似乎与这个问题相似。但是当我调查时,我无法找到问题的明确答案。

1 个答案:

答案 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的引用不会更改。