显示服务器端验证错误

时间:2016-12-20 02:27:16

标签: google-app-maker

对于我的一个模型,我有一个简单的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中全局异常处理的任何见解,或显示服务器端验证错误的替代方法吗?

1 个答案:

答案 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回调