Событие кнопки Dijit Dialog не выполняется

0

У меня есть Dijit Dialog (jsfiddle), созданный программно. Когда вызывается Dialog Show, я передаю идентификатор для кнопок во время выполнения. Я пытаюсь создать функции события щелчка для выполнения для идентификатора, переданного во время выполнения.

Однако события не выполняются. Я хотел бы знать, как прикрепить функцию к кнопкам диалога.

HTML

<button id="show">Show Dialog</button> 

JS

require([
    "dijit/form/CheckBox",
    "dijit/dijit",
    "dijit/form/Textarea",
    "dijit/form/FilteringSelect",
    "dijit/form/TextBox",
    "dijit/form/ValidationTextBox",
    "dijit/form/DateTextBox",
    "dijit/form/TimeTextBox",
    "dijit/form/Button",
    "dijit/form/RadioButton",
    "dijit/form/Form",
    "dijit/_DialogMixin"]);
require([
    "dojo/parser",
    "dojo/_base/declare",
    "dojo/domReady!",
    "dojo/ready"],

function (parser, declare, ready, Dialog) {
    parser.parse();

    dojo.ready(function () {
        function showDialog(yesBtnId, noBtnId) {
            var dialog = new dijit.Dialog({
                title: 'Confirmation',
                content: '<table style= "width: 300px;">' +
                    '<tr>' +
                    '<th style="text-align:center; padding: 5px" colspan="2"><label>Are You Sure ?</label></th>' +
                    '</tr>' +
                    '<tr>' +
                    '<td style="text-align:center; padding: 5px"><button id=' + yesBtnId + '>Yes</button></td>' +
                    '<td style="text-align:center;padding: 5px"><button id= ' + noBtnId + '>No</button></td>' +
                    '</tr>' +
                    '</table>'
            });

            dialog.show();
        }

        var myShowBtn = {
            id: "show",
            onClick: function (evt) {

                showDialog('yesDelete', 'noDelete');
            }
        };
        dojo.query("#show").connect("onclick", myShowBtn.onClick);

        var myYesDelete = {
            id: "yesDelete",
            onClick: function (evt) {

                alert('hello its working....');

            }
        };

        dojo.query("#yesDelete").connect("onclick", myYesDelete.onClick);

    });
});
Теги:
dojo

1 ответ

2
Лучший ответ

Вы пытаетесь добавить обработчик события для элемента, который еще не существует, когда вы его вызываете, поэтому обработчик события на самом деле не связан, потому что в этот момент ему нечего привязывать.

Однако, если вы переместите строку:

dojo.query("#yesDelete").connect("onclick", myYesDelete.onClick);

До функции showDialog() (поместите его за dialog.show()), тогда он будет работать, как вы можете видеть в этом обновленном JSFiddle.

  • 0
    Как я могу закрыть диалог в функции "#yesDelete"?
  • 0
    Я попытался dijit.byId ('dialog'). Destroy (); однако в функции yesDelete я получаю TypeError: dijit.byId () undefined. Есть идеи по этому поводу?
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню