我正试图在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属性会将自己附加到我的表记录中?