0

クリックするとダイアログ (Alloy UI ダイアログ、html) がポップアップする削除 (入力送信) ボタンを取得しました。

A.all("#RFB input.ConfirmDelete").each(function(node){
    node.on('click', function(event) {      

        if(confirmed) {
            showUserWaitDialog();
            return true;
        }
        else {
            deactivateKeyboardNav();
            deleteConfirm(node, confirmDeleteMessage, function () { //Runs the function rendering the pop up
                confirmed = true;
                event.target.click();
                showUserWaitDialog();
            });
        }
    });
});

問題は、eventが非同期で実行されているために削除が実行され、ユーザーが [OK] をクリックする (コールバックを呼び出す) のを待たないことです。

deleteConfirm は次の引数を取ります

function deleteConfirm(link, pText, callback) {

ポップアップの内容は次のとおりです。

var bodyContent = '<div class="vl-info vl-message"><h2>'+titleText+'</h2>'+
                        '<p>'+pText+'</p>' +
                        '<p class="more button-area"><a href="#" class="deleteOK">'+confirmButtonText+'</a><a href="#" class="deleteNotOK">'+discardButtonText+'</a></p></div>';

ボタンの機能は次のとおりです。

A.one('.deleteOK').on('click', function(e){
                            (jQuery.isFunction(callback)) && callback.apply();
                            confirmDialog.close();
                            confirmDialogOpen = false;
                        });

                        A.one('.deleteNotOK').on('click', function(e){
                            confirmDialog.close();
                            confirmDialogOpen = false;
                            return false;
                        });

これにどのようにアプローチすればよいですか?

4

1 に答える 1

0

Alloy UI は、優れたダイアログ ボックス API を提供します。この例を見て、要件に適用する価値があるかもしれません。

var dialog = new A.Dialog({
                title : '<your dialog box title here>',
                centered: true,
                modal: false,
                width: 600,
                height: 250,
                bodyContent: <You can keep the message to display here>,
                buttons: [
                          {
                              label: 'Delete',
                              id: 'deleteBtn',
                              handler: function() {
                                 //Place code to delete here. It get executed when user click on Delete button.
                              }
                          },
                          {
                              label: 'Cancel',
                              id: 'cancelActionItemBtn',
                              handler: function() {
                                  this.close();
                              }
                          }
                          ]
            }).render();
于 2014-06-04T12:53:25.397 に答える