我在我的mvc应用程序中使用backbone.js,我有一个场景,我必须将数组传递给Rest API中的Post方法。我试图在我的模型中设置一个数组属性,然后调用this.collection.create(model)。我正在使用这样的模型的属性
defaults: { Address: '', City: '', State: '', Zip: '', AddressArray: [] }并尝试将Post方法称为
e.models[0].set({ 'AddressArray': e.models}); this.collection.create(e.models[0]);这里e.models [0]是我模型的对象,e.models是一个模型数组。 set属性设置数组地址但是在创建它时会出现此错误。
Uncaught TypeError: Converting circular structure to JSON
请指导。
答案 0 :(得分:0)
错误只是意味着您已经创建了一个自引用对象(不能将其序列化为JSON)。也就是说,你已经完成了相同的工作:
var x = {};
x['test'] = x;
JSON.stringify(x); // TypeError: Converting circular structure to JSON
您可以先使用toJSON
创建模型的副本,以便对象不会引用自身:
var json = e.models[0].toJSON();
json['AddressArray'] = e.models[0].attributes;
this.collection.create(json);
但这没有多大意义,因为.attributes
指的是模型的属性,所以你所做的就是在AddressArray
下创建模型的副本,即如果模型是说的话{ prop: "val", prop2: "val2" }
,然后你最终得到:
{
prop: "val",
prop2: "val2",
AddressArray: {
prop: "val",
prop2: "val2",
}
}
无论哪种方式,您都无法将引用自身的对象转换为JSON;需要序列化,并通过调用Collection.create
将模型保存到服务器。