2

我正在 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);
}

谢谢

4

2 回答 2

3

如果这更容易一些那就太好了,但最好的选择是使用自定义属性(https://developers.google.com/appmaker/ui/viewfragments)。

您可以设置“动态”类型的自定义属性并将其命名为任何名称,例如“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) 绑定到小部件属性。例如,您可能有一个confirmText 属性,其中确认按钮文本属性绑定到@properties.confirmText。

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

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

  app.showDialog(app.pageFragments.ConfirmationDialog);
}
于 2017-01-13T18:18:22.757 回答
0

对于我的确认对话框,我只是在显示对话框之前设置了 OK 按钮的 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);
}
于 2017-01-13T21:46:18.177 回答