我想在同步ExtJS网格后在UI中显示来自我的服务器的消息。以下是该如何发布的摘录:
this.store.sync({
callback: function (records, operation, success) {
// messageProperty accessing code
},
success: function (batch, options) {
// messageProperty accessing code
},
failure: function (batch, options) {
}
});
这是商店定义的一部分:
proxy: {
headers: { 'Accept': 'application/json' },
limitParam: undefined,
pageParam: undefined,
startParam: undefined,
paramsAsJson: false,
type: 'ajax',
// ...
reader: {
type: 'json',
rootProperty: 'Data',
messageProperty: 'Message'
},
// ...
},
这是从服务器返回的一些数据(省略了数组中的数据:
{
"Data":[
],
"Message":"Success!"
}
应用程序似乎没有读取数据属性的问题(即我的网格正常工作),但我无法在sync方法的回调或成功事件中访问message属性。这是错误消息:
Uncaught TypeError: Cannot read property 'Message' of undefined(…)
createAccessor: (function () {
var re = /[\[\.]/;
return function (expr) {
var me = this,
simple = me.getUseSimpleAccessors(),
operatorIndex, result, current, parts, part, inExpr, isDot, isLeft, isRight, special, c, i, bracketed, len;
if (!(expr || expr === 0)) {
return;
}
if (typeof expr === 'function') {
return expr;
}
if (!simple) {
operatorIndex = String(expr).search(re);
}
if (simple === true || operatorIndex < 0) {
result = function (raw) {
return raw[expr]; <-------- This is where it goes wrong at some point
};
}
如果我通过此代码调试,在某些时候原始变量会丢失其值,这会给出预期的未定义错误消息。我的问题是我如何能够在Ext 6商店的回调函数或成功函数中检索message属性?
在ExtJS 6中,Sencha已将keepRawData
的默认值更改为false。如果将其更改回true,则一切都应该按预期再次运行。 Sencha文档告诉我们存在内存泄漏的可能性,但我还没有遇到过这样的问题。
您可能不必更改默认的keepRawData值在ExtJS 6中,您还可以使用以下命令从操作参数访问messageProperty:
operation.error;
要么
operation.getError();
唯一的问题是如果success参数为true,则不设置error属性。在这种情况下,我猜他们希望你使用记录参数,因为这是服务器的数据无论如何。