将数据源动态绑定到应用程序制造商弹出窗口

Dynamically Bind Data source to app maker popup

我需要一个通用的 "Delete confirmation" 弹出窗口,并使用在弹出窗口出现之前触发的事件将数据源动态绑定到弹出窗口。

单击 "Location" 页面上的删除图标时将出现弹出窗口(屏幕截图如下)。我需要同时设置弹窗的数据源。 (当用户单击此删除图标时)并且当用户单击弹出窗口中的 "Delete" 按钮时必须删除记录。

这是我目前在上面删除图标的onclick事件的代码

app.popups.ItemDeleteConfirmationDialog.descendants.Content.datasource = widget.datasource;
app.popups.ItemDeleteConfirmationDialog.descendants.ConfirmButton.datasource = widget.datasource;
app.popups.ItemDeleteConfirmationDialog.visible=true;

这就是弹出窗口的 onClick 按钮

widget.datasource.deleteItem();

请帮我解决这个问题。 谢谢。

Google 的 App Maker 团队成员提出了以下建议:

在您的确认弹出窗口中设置动态类型的自定义 属性。出于本示例的目的,请调用 属性 CallbackFn。

对于弹出窗口中 ConfirmButton 的 onClick 事件,设置以下客户端脚本:

if (typeof widget.root.properties.CallbackFn === 'function') {
  widget.root.properties.CallbackFn();
}
widget.root.visible = false;

对于数据源中的删除按钮 table 设置以下客户端脚本:

deleteItem(widget.datasource);

在您的脚本部分添加客户端脚本或在现有客户端脚本下插入以下函数:

function deleteItem(datasource) {
  var popup = app.popups.ItemDeleteConfirmationDialog;

  popup.properties.CallbackFn = function() {
    datasource.deleteItem();
  };

  popup.visible = true;
}

由于 table 中的删除按钮位于 table 行内,您可能需要更改传递给 deleteItem() 函数的函数变量,如下所示:

deleteItem(widget.parent.parent.datasource);

如果这不起作用,请告诉我。我在自己的应用程序中使用更复杂的逻辑进行了设置,并且在某些情况下我将多个变量传递给我的 deleteItem() 函数并且效果很好。