对于我的一个模型,我有一个简单的ondelete事件处理程序:
function validateStateDeletion(record){
if (record.Name===STATE_SUBMITTED || record.Name===STATE_CLOSED){
throw 'Cannot delete internal states '+STATE_SUBMITTED+' and '+STATE_CLOSED;
}
确实有效并且可以防止符合条件的记录被删除。我看到错误传播回客户端(它作为例外显示在开发控制台中)。但是,捕获异常以向用户显示内容,使用window.onerror作为应用程序初始化脚本的一部分,似乎没有任何效果(这可能不是正确的Window对象,因为window.onerror在开发控制台中未定义,它可能是一些沙箱iframe,其中执行客户端脚本)。
window.onerror=function(message, url, line, column, error){
window.toastr.error("Error:" +(message||error));
return false;
};
问题:有关AppMaker中全局异常处理的任何见解,或显示服务器端验证错误的替代方法吗?
答案 0 :(得分:3)
<强> &GT;&GT; AppMaker中的全局异常处理
afaik现在没有这样的机制
<强> &GT;&GT;或另一种显示服务器端验证错误的方法?
这里我们至少有3个案例
1 Calling the server-side function
google.script.run
.withSuccessHandler(function(result) {
// TODO
})
.withFailureHandler(function(e) {
// TODO
})
.MyServerSideFunction();
2 Triggering any data-related action(createItem, saveChanges, deleteItem, load, reload... etc)
widget.datasource.createItem({
success: function (somethingThatDependsOnActionType) {
// TODO
},
failure: function (e) {
// TODO
}
});
3在自动保存模式下更改数据源的项目
app.datasources.Employees.item.Name = 'Bob';
Afaik在这种情况下没有好办法处理错误。希望很快就能解决。暂时作为解决方法,您可以将数据源切换到手动保存模式,并将成功+失败处理程序传递给saveChanges回调