我正在尝试在 extjs6 中解决一个棘手的错误。在 ProxyStore 中保存记录时出现无限循环:
Ext.JSON.doEncode ext-all-debug.js:48683
Ext.JSON.encodeObject @ ext-all-debug.js:48789
Ext.JSON.doEncode @ ext-all-debug.js:48685
Ext.JSON.encodeObject @ ext-all-debug.js:48789
经过进一步调查,我发现如果我第二次在表中保存一行,那么我表中的数据对象就会被一些奇怪的方法污染。
最初我在我的商店数据(例如store.data.items[0].data)中有一个这样的条目:
{autoRelease: false
id: "app.model.DssMarketModel-9"
foo: "1"
bar: "2"}
如果我在一个对话框和一个Ext.form.Panel中打开它,我可以修改这个对象并保存它。然而,在我保存它之后,在我对代理存储(即Ext.data.ProxyStore sync() )执行“同步”之后,记录会被一大堆垃圾污染。
{
getAllResponseHeaders: ()
getResponseHeader: (name)
request: constructor
getAllResponseHeaders: ()
getResponseHeader: (name)
////
autoRelease: "false"
id: "app.model.DssMarketModel-9"
foo: "1"
bar: "2"
////
request: constructor
requestId: 9
responseText: ""
responseXML: null
status: 200
statusText: "OK"
__proto__: Object
}
这导致我的堆栈溢出循环依赖问题,因为在请求对象的深处再次引用了相同的记录对象,使得同步不可能。
似乎这些新属性已通过名为app.overrides.ResponseHeadersBugfix的东西放在那里。
有谁知道为什么会发生这个问题?为什么 ResponseHeadersBugFix 属性会附加到我的表记录中?