Javascript 是否可以在运行时更改主干.Collection的模型
是否有一种干净的方法可以在运行时更改主干集合的模型?换句话说,我有一个名为Javascript 是否可以在运行时更改主干.Collection的模型,javascript,backbone.js,collections,Javascript,Backbone.js,Collections,是否有一种干净的方法可以在运行时更改主干集合的模型?换句话说,我有一个名为BaseCollection的集合,默认情况下,它的模型名为BaseModel。该模型充当其他模型的基类。说AModel,BModel,等等 现在,在运行期间,基于特定参数的集合需要了解它是否必须调用BaseModel的parse方法(具有特定覆盖)或扩展自BaseModel的模型中使用的parse方法之一 通常,这可以通过每次实例化集合时扩展集合来实现。例如,默认情况下,定义如下 var BaseCollection =
BaseCollection
的集合,默认情况下,它的模型名为BaseModel
。该模型充当其他模型的基类。说AModel
,BModel
,等等
现在,在运行期间,基于特定参数的集合需要了解它是否必须调用BaseModel
的parse
方法(具有特定覆盖)或扩展自BaseModel
的模型中使用的parse
方法之一
通常,这可以通过每次实例化集合时扩展集合来实现。例如,默认情况下,定义如下
var BaseCollection = Backbone.Collection.extend({
model : BaseModel,
// other stuff here
});
现在,如果我想要一个集合,其中AModel
必须是模型
BaseCollection.extend( { model: AModel } );
这里是复杂的东西。如果集合不包含相同类型的模型,该怎么办。换句话说,如果
BaseCollection
包含AModel
s、BModel
s等,该怎么办?注意,我需要为每个模型调用parse
方法,因为它们略有不同 创建不同模型集合的magic
是通过实现model
功能来实现的
下面是来自
在您的情况下,您应该使用属性来决定要创建哪个模型创建不同模型集合的
魔法是通过实现模型
功能
下面是来自
在您的情况下,您应该使用属性来决定要创建哪个模型创建不同模型集合的魔法是通过实现模型
功能
下面是来自
在您的情况下,您应该使用属性来决定要创建哪个模型创建不同模型集合的魔法是通过实现模型
功能
下面是来自
在您的情况下,您应该使用属性来决定要创建的模型谢谢+1.我在文档中完全没有看到它。如果条件
来自从后端返回的数据,我可以继续应用此条件吗?换句话说,在哪里可以找到条件
?从attrs
,options
或其他地方?@flexaddicted条件可以来自attrs、option、收集状态、标志或您拥有的任何其他synchronous
代码,例如,在attrs中,我将找到从属于特定模型的请求返回的属性。是吗?@flexaddicted是的,您需要找到一些属性(从属性中)来区分不同的模型。谢谢+1.我在文档中完全没有看到它。如果条件
来自从后端返回的数据,我可以继续应用此条件吗?换句话说,在哪里可以找到条件
?从attrs
,options
或其他地方?@flexaddicted条件可以来自attrs、option、收集状态、标志或您拥有的任何其他synchronous
代码,例如,在attrs中,我将找到从属于特定模型的请求返回的属性。是吗?@flexaddicted是的,您需要找到一些属性(从属性中)来区分不同的模型。谢谢+1.我在文档中完全没有看到它。如果条件
来自从后端返回的数据,我可以继续应用此条件吗?换句话说,在哪里可以找到条件
?从attrs
,options
或其他地方?@flexaddicted条件可以来自attrs、option、收集状态、标志或您拥有的任何其他synchronous
代码,例如,在attrs中,我将找到从属于特定模型的请求返回的属性。是吗?@flexaddicted是的,您需要找到一些属性(从属性中)来区分不同的模型。谢谢+1.我在文档中完全没有看到它。如果条件
来自从后端返回的数据,我可以继续应用此条件吗?换句话说,在哪里可以找到条件
?从attrs
,options
或其他地方?@flexaddicted条件可以来自attrs、option、收集状态、标志或您拥有的任何其他synchronous
代码,例如,在attrs中,我将找到从属于特定模型的请求返回的属性。是吗?@flexaddicted是的,您需要找到一些属性(从属性中)来区分不同的模型
var Library = Backbone.Collection.extend({
model: function(attrs, options) {
if (condition) {
return new PublicDocument(attrs, options);
} else {
return new PrivateDocument(attrs, options);
}
}
});