首页 文章

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

提问于
浏览
1

我正在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 回答

  • 3

    如果这有点容易,那就太棒了,但最好的办法是使用自定义属性(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)绑定到窗口小部件属性 . 例如,您可能具有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);
    }
    
  • 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);
    }
    

相关问题