2017-01-13 3 views
1

私はGoogle App Makerでカスタム確認ダイアログを作成していますが、確認ボタンを押して渡された機能を呼びたいと思います。ボタンウィジェットに「onclick」イベントが表示されません。これを行う方法に関する提案はありますか?Google App Makerのカスタム確認ダイアログにコールバックを添付するにはどうすればよいですか?

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); 
} 

おかげ

+0

だけでなく、あなたのコードに基づいて、IDがどのように我々はあなたの問題を解決することになっているあなたが任意のコードを提供しなかった、待って.....と言います。あなたがdidnしたときにコードしてくれましたか? –

+0

私はウィジェットでイベントを見つけることができなかったのでコードを追加しませんでしたが、うまくいくものを追加しました。 – Scott

答えて

3

これは少し簡単だった場合、それは素晴らしいことだろうが、最善の策は、カスタムプロパティ(https://developers.google.com/appmaker/ui/viewfragments)を使用することです。

"Dynamic"タイプのカスタムプロパティを設定して、何かを呼び出すことができます。たとえば、 "onConfirmCallback"を取ることができます。そして、あなたはそのカスタムプロパティに機能を設定することができます:閉じるボタンのonClickの中

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

そして:ダイアログを呼び出すため

コードを

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

はまた少しがあることに注意してくださいあなたの例よりもラベルを設定する良い方法、カスタムプロパティを使う方法。

カスタマイズするウィジェットプロパティのカスタムプロパティを作成し、それらのカスタムプロパティ(@ properties.propertyName)をウィジェットプロパティにバインドします。たとえば、確認ボタンのテキストプロパティーを@ properties.confirmTextに設定して、confirmTextプロパティーを設定することができます。

ダイアログを呼び出すと、カスタムプロパティを設定できます。すべてのプロパティを使用して、あなたのコード例のクイック修正:私はダイアログを表示する前に、私の確認ダイアログの

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

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

アイデアありがとうプロパティを使用するには、それを動作させることができました。コードは素敵で今はきれいです! – Scott

0

、私はちょうどすべてがダミーのために簡単です一つの場所にある(OKボタンのonclickのを設定します(私)は、6ヶ月で、それを維持する必要があります誰が:

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); 
} 
関連する問題