extjs存储错误处理

kal*_*lan 6 error-handling json extjs jsonstore

我正在尝试Ext.data.Store在创建新的实例时处理异常Ext.data.Record.当服务器使用以下json响应时:

{"success": false, "message": "some text"}
Run Code Online (Sandbox Code Playgroud)

我得到"请求"类型的异常,即使服务器返回HTTP 200响应!

要获得"远程"错误,我必须使用root属性创建一个对象

({
    "success": false,
    "message": "some text",
    "data": {
        "PositionId": "00000000-0000-0000-0000-000000000000",
        "Name": "123"
    }
})
Run Code Online (Sandbox Code Playgroud)

......但我不想要这个.有没有办法改变这种行为?

此外,当我在商店中插入记录时,它会自动添加到关联的网格中,但如果发生错误,它仍然存在,所以我需要在每个错误上重新加载存储.有没有更好的方法来做到这一点?

Jos*_*ust 10

您应该捕获两个Store事件中的一个:

  1. loadexception (废弃)
  2. exception

例如,您可以:

// make the store
var myStore = new Ext.data.Store({...});
// catch loading exceptions
myStore.on('exception',function( store, records, options ){
    // do something about the record exception
},this);
// load store
myStore.load();
Run Code Online (Sandbox Code Playgroud)

您还可以使用商店中的成功失败事件,根据成功标志执行操作.


kal*_*lan 4

最后,我发现如果我发回空数据,它会按预期工作。所以我不需要发回任何虚构的数据,我的服务器响应是:

({
    "success": false,
    "message": "some text",
    "data": {}
})
Run Code Online (Sandbox Code Playgroud)