Google app maker 服务器端更改后客户端重新加载记录

Google app maker 服务器端更改后客户端重新加载记录,google-app-maker,Google App Maker,在服务器脚本中调用app.saveRecords()后,我必须在任何客户端页面上点击刷新(在Chrome中)以重新加载数据源。在服务器上的saveRecords()之后,我是否可以调用一些东西来强制客户端刷新?此客户端脚本代码有效: function addCont(widget) { var holder = widget.root.descendants; var con = { barcode: holder.Barcode.value, part: holde

在服务器脚本中调用app.saveRecords()后,我必须在任何客户端页面上点击刷新(在Chrome中)以重新加载数据源。在服务器上的saveRecords()之后,我是否可以调用一些东西来强制客户端刷新?

此客户端脚本代码有效:

function addCont(widget) {

  var holder = widget.root.descendants;

  var con = {
    barcode: holder.Barcode.value,
    part: holder.Part.value,
    location: holder.Location.value
  };

  google.script.run.withSuccessHandler(function(result) {
    console.log("Container Added");

    // This forces the other pages to reload after the server adds the record
    widget.root.datasource.load();

    clearAddCont(widget);
  }).addContainer(con);
}

如果您引用的是onBeforeSave或onAfterSave事件的模型,那么您应该实现手动保存数据源而不是自动保存数据源,并使用回调函数调用客户端数据源.saveChanges(),以启动客户端数据源的重新加载。如果正在运行通过google.script.run从客户端启动的服务器函数,则可以在客户端上实现.withSuccessHandler()和.withFailureHandler()函数以提供回调。你应该提供更多关于你的情况的细节,以便提供相关的答案。我有一个“添加记录”页面和一个不同的“列表记录”页面。添加记录页面创建一个对象,并调用一些服务器脚本来添加记录。添加记录页面没有数据绑定,因为我需要将条形码扫描到关系字段中(无法处理appmaker生成的下拉列表)。“列表记录”页面是数据绑定的,但除非我在Chrome中刷新,否则不会更新。服务器回调将转到“添加”页面,但这无助于更新“列表记录”页面。我正在从服务器脚本中查找类似“app.pages.listpage.datasource.refresh”的内容。好的,那么如何在“添加记录”页面上调用服务器脚本呢?是用google.script.run吗?如果它是一个独立的服务器脚本,没有从客户端调用,那么就无法在客户端上启动数据源重新加载。如果您在问题中包含相关代码(客户机/服务器),这会有所帮助。在withSuccessHandler中添加widget.root.datasource.load()可以使其正常工作。这使得使用该数据源的其他页面刷新。我在构建待办事项列表时遇到了相同的问题,当我修改列表中的每个项目时,这可能会导致整个列表状态的更改,为了将该项目更改和listStatus链接起来,我使用了在列表项模型的onAfterSave()中实现的服务器脚本,使用服务器脚本而不是客户端脚本有助于避免所有UI交互的复杂性,但问题是我找不到Jim在18:02提到的在UI上更新服务器更改待办事项列表状态的调用。是的,google.script.run可以用作解决方案,但这将打破简单的解决方案。需要一个客户端记录侦听器。