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

Zea*_*rin 2 javascript backbone.js ampersand.js

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

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


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

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

nik*_*shr 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);
Run Code Online (Sandbox Code Playgroud)
<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>
Run Code Online (Sandbox Code Playgroud)

但请注意,m.collection将模型添加到另一个集合时,对集合的引用不会更改.

  • Ampersand.js也是如此.[requirebin上的例子](http://requirebin.com/?gist=e112d59e8bf4f3831964) (2认同)