jQuery UI.Layout: как отложить открытие панели - PullRequest
2 голосов
/ 11 января 2011

Я использую UI.Layout, пытаясь создать поведение, похожее на макет ExtJ: при закрытии / открытии горизонтальных панелей изменяемый размер должен быть скрыт и вновь отображаться с эффектом слайда.

Это было легко при закрытии панели, так как эффект появляется после события onclose, но у меня серьезные трудности с применением того же поведения при открытии панели.

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

Вот соответствующий код:

outerLayout = $('#outer-layout').layout({
    west : {
        // ...
        onclose_start : function() {
            hideResizer('west');
        },
        onclose_end : function() {
            styleResizer('west');
            showResizer('west');
            animateResizerOnClose('west');
        },
        onopen_start : animateWestResizerOnOpen
    }
    // ...
});

function animateWestResizerOnOpen() {
    $(this).parent().delay(1400).queue(function() {
        $('#outer-layout').layout().open('west');
    }).hide('slide', 300);
}

Что здесь не так?

1 Ответ

1 голос
/ 14 января 2011

В некотором смысле это обходной путь, но он хорошо работает:

Поскольку кажется, что нет никакого способа вмешаться в fx-очередь pane-resizer, и setTimeout() не предложил бы никакой помощи, если бы событие вызывалось независимо, я обошел проблему, используя более крутой изгиб открытия панели FX ослабление Это позволяет открывать панель с относительно медленным запуском и показывать слайд-шоу с изменением размера.

...