Окно кендо не открывается снова после его разрушения - PullRequest
0 голосов
/ 19 октября 2018

У меня есть ситуация, когда мне нужно уничтожить окно кендо после завершения моей работы.Окно Kendo открывается при нажатии кнопки и уничтожается, когда его работа завершена.

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

Код моего окна Kendo:

        var Snapshotwindow = $('#newWindow');
        Snapshotwindow.kendoWindow({
            width: "500px",
            height: "267px",
            resizable: false,
            sortable: false,
            modal: true,
            draggable: false,
            title: "New Window",
            visible: false,
            appendTo: "#AppBody",
        });
        Snapshotwindow.data("kendoWindow").center().open();

Как мне его достичь?

Можно ли заново инициализировать окно после его разрушения?

1 Ответ

0 голосов
/ 19 октября 2018

Когда виджет окна кендо уничтожается, он удаляет свои элементы HTML из DOM, включая корневой элемент, из которого он был создан.Вот почему вы не можете открыть окно во второй раз.Это дает вам два основных подхода при использовании виджета Window:

  1. Создайте виджет впервые, удерживая ссылку на него.Не уничтожайте при закрытии, а открывайте снова, используя ссылку.

    if (Snapshotwindow == null) {
        Snapshotwindow = $('#newWindow').kendoWindow({
            width: "500px",
            height: "267px",
            resizable: false,
            sortable: false,
            modal: true,
            draggable: false,
            title: "New Window",
            visible: false,
            appendTo: "#AppBody",
        }).data("kendoWindow");
    }
    Snapshotwindow.center().open();
    
  2. Добавьте новый элемент в DOM, превратив его в виджет окна перед его показом.Может быть безопасно уничтожен, и впоследствии процесс может повторяться столько раз, сколько вам нужно.

    <script id="modal-editor-window" type="text/x-kendo-template">
        <!-- your window content here -->
    </script>
    
    <script type="text/javascript">
        var options = {
            title: "Edit",
            modal: true,
            visible: false,
            deactivate: function () {
                this.destroy();
            }
        };
    
        var mew = $.parseHTML($("#modal-editor-window").html().trim());
        $("body").append(mew);
    
        var mw = $(mew).kendoWindow(options).data("kendoWindow");
        mw.center().open();
    </script>
    

Поскольку вы говорите, что вам нужно уничтожить окно, вариант 2 - это путь;Я бы предположил, что загрузить новый элемент DOM, вероятно, проще всего, используя шаблон кендо (как показано выше).

...