Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Backbone.js 主干模型-创建新模型时集合属性不为空_Backbone.js - Fatal编程技术网

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
,并且在属性中不包含它们