在Backbone应用程序中列出Model的实例

时间:2014-01-06 14:56:07

标签: javascript backbone.js collections model

在我的Backbone应用程序中,我有一个模型。有没有办法在应用程序中获取此模型的所有实例,如果不是所有实例都属于同一个集合?有些实例可能根本不属于任何Collection。

为什么我需要这样做吗?

我有一个命名空间模型(比方说Order.Models.Entry)。这是我正在谈论的实例的模型。有一些像Order.Models.Entries这样的集合包含Order.Models.Entry类型的实例。但实例只有在选中它们时才会进入此集合(具有某个属性)。在被选中之前,模型只是......好......模型。

更新

显然,我可以将我创建的每个模型加载到一些allModels集合中,因为它已在评论中提出。但问题不在于解决方法,而是关于精确查找。我之所以想避免将模型添加到超级集合中,是因为大多数模型都会被添加到不同的集合中,我只是想避免创建虚拟集合以用于跟踪目的。

2 个答案:

答案 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)。这样,您就可以访问模型,如果您销毁模型,它将从集合中删除它。