Extjs-在Model.save()中重试API请求



免责声明:我是extjs的新手,仍在围绕框架寻找方法。

我有一个extjs前端,它与PHP后端通信。我的应用程序的一部分将数据提交到后端,并接收如下响应:

var data = {
"name": values.namefield,
"activityList" : validActivityList,
"flag": true
};
var cluster = Ext.create('ClusterModel', data);
cluster.save({
success: function (model,data) {
//handle success scenario
},
failure: function (model, response) {
//oops something went wrong
//need to retry the request with data flag set to false!
}
});

我有一个特殊的失败场景,需要通过将flag字段设置为false来重试请求。我能想到的唯一方法是在故障处理程序中嵌套和复制代码。

类似这样的东西:

failure: function (model, response) {
//oops something went wrong
//need to retry the request with data flag set to false!
var data = {
"name": values.namefield,
"activityList" : validActivityList,
"flag": false
};
var clusterRetry = Ext.create('ClusterModel', data);
clusterRetry.save({...//more duplicate code})
}

这感觉是一个非常糟糕的主意,我甚至不确定它是否可行。有没有其他选择可以让我做到这一点?

同样值得注意的是,我使用的是extjs 4.1.1

您可以创建一个函数,该函数在出现错误时调用自己,标志为false。

类似的东西:

SaveCluster: function(values, validActivityList, flag) {
var data = {
"name": values.namefield,
"activityList" : validActivityList,
"flag": flag
};
var cluster = Ext.create('ClusterModel', data);
cluster.save({
success: function (model,data) {
//handle success scenario
},
failure: function (model, response) {
this.SaveCluster(values, validActivityList, false);
}
});
}

你可能在故障功能中有范围问题,如果问题出现,我会让你找到解决方案,如果你有问题,可以随时问我们。

我2年前开始使用ExtJS,我记得这个框架一开始是多么愚蠢;(

最新更新