如何在 Google App Maker 中将回调附加到自定义确认对话框?

How to attach a callback to a custom confirmation dialog in Google App Maker?

我正在 Google App Maker 中创建一个自定义确认对话框,并希望“确认”按钮调用一个传入函数。我在按钮小部件中没有看到 "onclick" 事件。有关如何执行此操作的任何建议?

function confirmationDialog(msg, confirmFunction)
{
  var desc = app.pageFragments.ConfirmationDialog.descendants;
  var label = desc.Label;
  var confirmButton = desc.Confirm;

  label.text = msg;
  confirmButton.onClick = confirmFunction;  // does not work

  app.showDialog(app.pageFragments.ConfirmationDialog);
}

谢谢

如果这能更简单一点就好了,但最好的办法是使用自定义属性 (https://developers.google.com/appmaker/ui/viewfragments)。

您可以设置类型为 "Dynamic" 的自定义 属性 并任意命名,例如 "onConfirmCallback"。然后你可以在那个自定义 属性:

上设置函数

调用对话框的代码:

app.pageFragments.ConfirmationDialog.properties.onConfirmCallback = function(param) {
  alert(param); 
};
app.showDialog(app.pageFragments.ConfirmationDialog);

然后在关闭按钮的 onClick 中:

app.pageFragments.ConfirmationDialog.properties.onConfirmCallback("hi");
app.closeDialog();

另请注意,设置标签的方法比您的示例稍微好一些,同样使用自定义属性。

为您想要自定义的任何小部件属性创建自定义属性,然后将这些自定义属性 (@properties.propertyName) 绑定到小部件 属性。例如,您可能有一个确认文本 属性,确认按钮文本 属性 绑定到 @properties.confirmText.

然后当您调用对话框时,您可以只设置那些自定义属性。使用所有属性快速修改示例代码:

function confirmationDialog(msg, confirmFunction)
{
  var properties = app.pageFragments.ConfirmationDialog.properties;
  properties.text = msg;
  properties.confirmCallback = confirmFunction;

  app.showDialog(app.pageFragments.ConfirmationDialog);
}

对于我的确认对话框,我只是在显示对话框之前设置了“确定”按钮的 onclick(所有内容都在一个地方,这对于必须在六个月内维护它的假人(我)来说更容易:

  var dialog=app.pages.ConfirmationDialog;
  dialog.descendants.message.text='Are you sure...?'
  dialog.descendants.btnOk.getElement().onclick=function(){
      //do something here
      app.closeDialog();
    });
  };
  app.showDialog(dialog);
}