Ориентация переключателя сплиттера kendo ui

Просто хотел поделиться решением небольшой проблемы, с которой я столкнулся, в одном из моих недавних проектов здесь.

Ситуация следующая: в веб-проекте на основе пользовательского интерфейса kendo вы хотите использовать функцию разветвителя со следующей базовой конфигурацией:

HTML

<div id="mySplitter">
    <div id="primaryItemPane">

    </div>
    <div id="secundaryItemPane">

    </div>
</div>

JS

$("#mySplitter").kendoSplitter({
                orientation: "vertical",
                panes: [
                    { collapsible: false, size: "50%", contentUrl: "/urlToPane" },
                    { collapsible: false, size: "50%", contentUrl: "/urlToPane" },
                ]
            });

Теперь предположим, что вы хотите изменить "переключение" ориентации и иметь возможность использовать этот переключатель столько раз, сколько захотите.

Основная проблема заключается в том, что Kendo UI не предоставляет встроенных функций для переключения ориентации и поддержки базовых существующих панелей.

Я предоставлю ответ ниже, но другие рабочие решения или более эффективные способы приветствуются.

1 ответ

Решение

Как указано в вопросе, я опубликую свое собственное решение здесь.

Эта страница уже дала мне хороший старт, но некоторые решения не помогли мне или не предоставили конкретный код для описанного решения.

Поэтому я занялся отладкой с помощью Chrome и нашел следующее решение:

orderbasedSwitchOrientation: function () {
        //get the existing working splitter
        var splitter = $("#mySplitter").data("kendoSplitter");

        //remove the DOM splitbar elements and remove all splitter styling
        splitter.element
            .children(".k-splitbar").remove()
            .end()
            .children(".k-pane").css({ width: "", height: "", top: "", left: "" });

        //destroy the splitter link to the DOM
        splitter.destroy();

        //Switch the orientation of the destroyed splitter object
        splitter.orientation = splitter.options.orientation = (splitter.orientation == "vertical" ? "horizontal" : "vertical");

        //re-initialize the splitter with the newly switched orientation
        $("#mySplitter").kendoSplitter({
            orientation: splitter.orientation
        });
    }

Я думаю, что такой подход, так как вы никогда полностью не делаете объект сплиттера нулевым в JS, но вы полностью удаляете ссылку на DOM и сбрасываете DOM, устанавливая его открытым для повторного связывания с Splitter.

Как указано выше, если у кого-то есть лучшие решения, пожалуйста, предоставьте их

Привет

Другие вопросы по тегам