Backbone.js 主干模型-创建新模型时集合属性不为空
我有一个以主干集合作为属性的模型。当我创建一个新模型并将其与其集合一起保存到数据库时,一切都正常 但是,创建新模型时,其集合包含以前的模型值。所有其他属性按预期为空 我定义了如下的模型默认值:Backbone.js 主干模型-创建新模型时集合属性不为空,backbone.js,Backbone.js,我有一个以主干集合作为属性的模型。当我创建一个新模型并将其与其集合一起保存到数据库时,一切都正常 但是,创建新模型时,其集合包含以前的模型值。所有其他属性按预期为空 我定义了如下的模型默认值: defaults: { InsertionOrderNumber: null, ClientID: null, CampaignName: null, FromDate: null, ToDate: null,
defaults: {
InsertionOrderNumber: null,
ClientID: null,
CampaignName: null,
FromDate: null,
ToDate: null,
TotalBudget: null,
ManagementFee: null,
AgencyCommission: null,
SourceDocuments: new Uploads() //this is the collection
}
出于某种原因,该集合的同一实例似乎正用于该类型的所有新模型
知道为什么会这样吗
提前感谢=)按原样,new Uploads()
在定义模型时进行评估,而不是在创建新实例时进行评估。使用函数在默认设置中创建新集合:
var M = Backbone.Model.extend({
defaults: function() {
return {
InsertionOrderNumber: null,
ClientID: null,
CampaignName: null,
FromDate: null,
ToDate: null,
TotalBudget: null,
ManagementFee: null,
AgencyCommission: null,
SourceDocuments: new Uploads()
};
}
});
还有一个演示真棒,感谢您的快速响应。问题解决了。我怀疑这是一个类似的问题。感谢你发现了这个问题,我正遭受着与我正在努力学习的完全相同的痛苦。但是,一旦我明白了我做错了什么,我觉得更好的解决方案是在initialize函数中设置this.set('SourceDocuments',new Uploads())。“这有什么不对吗?”大卫·里德尔说,这本身没有错,只有一个。您必须检查是否没有将该属性作为选项传递给构造函数,以及2。如果在
设置之前在initialize函数中设置侦听器,则会触发它们,请小心。旁注:我更喜欢将子集合设置为model.SourceDocuments
,并且在属性中不包含它们