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

时间:2017-01-13 15:59:36

标签: 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);
}

由于

2 个答案:

答案 0 :(得分: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属性,确认按钮的文本属性为boudn,为@ properties.confirmText。

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

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

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

答案 1 :(得分: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);
}