在我的Backbone应用程序中,我有一个模型。有没有办法在应用程序中获取此模型的所有实例,如果不是所有实例都属于同一个集合?有些实例可能根本不属于任何Collection。
为什么我需要这样做吗?
我有一个命名空间模型(比方说Order.Models.Entry)。这是我正在谈论的实例的模型。有一些像Order.Models.Entries这样的集合包含Order.Models.Entry类型的实例。但实例只有在选中它们时才会进入此集合(具有某个属性)。在被选中之前,模型只是......好......模型。
更新
显然,我可以将我创建的每个模型加载到一些allModels
集合中,因为它已在评论中提出。但问题不在于解决方法,而是关于精确查找。我之所以想避免将模型添加到超级集合中,是因为大多数模型都会被添加到不同的集合中,我只是想避免创建虚拟集合以用于跟踪目的。
答案 0 :(得分:1)
没有。为什么你不应该这样做,有几个很好的设计理由。 (封装,不污染全球范围等......)
如果你仍然想拥有这个解决方案,你可以维护一个Gloabl列表并让你的Backbone.Model插入这个列表中,这是一个快速的解决方案:
var allMyModels = [] ;
var MyModel = Backbone.Model.extend({
initialize:function(){
allMyModels.push(this);
// Some more code here
},
// also if you wish you need to remove self on close delete function
});
var x = new MyModel();
var y = new MyModel();
在此代码的末尾,allMyModels将具有两个模型
答案 1 :(得分:1)
为什么不创建一个集合(我们称之为allModels
),每次创建模型时,请执行:allModels.add(model)
。这样,您就可以访问模型,如果您销毁模型,它将从集合中删除它。