1

当我尝试使用 .save() 保存模型时出现错误

Converting circular structure to JSON

有趣的是 modelInstance.toJSON() 工作得很好。

错误在backbone.js 第1148 行抛出, 即:

params.data = JSON.stringify(options.attrs || model.toJSON(options));

这是我设置模型的方式:

var Clip = Backbone.RelationalModel.extend({
    idAttribute: "mediaItemId",
    defaults: {
        node: {}
    }
});

var clipCollection = Backbone.Collection.extend({
    model: Clip
});

var mainModel = Backbone.RelationalModel.extend({
    url: '/api/v0/videostate',
    relations: [
        {
            type: Backbone.HasMany 
            ,key: 'videoCollection'
            ,relatedModel: Clip
            ,collectionType: clipCollection
            ,includeInJSON: Clip.idAttribute
            ,reverseRelation: {
                key: 'parent',
                includeInJSON: Clip.idAttribute
            }
        }
    ],
});

var modelInstance = new mainModel()

modelInstance.fetch();

加载到模型中的 JSON:

在此处输入图像描述

4

2 回答 2

1

includeInJSON: Clip.idAttribute反向变化includeInJSON: Clip.prototype.idAttribute

像这样的东西

{
    type: Backbone.HasMany 
    ,key: 'videoCollection'
    ,relatedModel: Clip
    ,collectionType: clipCollection
    ,includeInJSON: Clip.prototype.idAttribute
    ,reverseRelation: {
       key: 'parent',
       includeInJSON: Clip.prototype.idAttribute
    }
}
于 2013-10-20T20:12:30.423 回答
0

用上面的代码创建了一个 JSFiddle,http://jsfiddle.net/ravikumaranantha/PuLxQ/6/,它不会抛出任何错误。

var Clip = Backbone.RelationalModel.extend({
    idAttribute: "mediaItemId",
    defaults: {
        node: {} //could be problem here
    }
});

我只是觉得问题可能是(不确定)在默认映射中有一个对象,您应该避免在默认值中使用对象/数组,它们将在所有实例中共享。如果您可以从 fetch 调用中发布响应,那应该有助于我们进一步调试它。

于 2013-10-20T17:30:30.773 回答