Wicket: замена панелей на fadeIn и fadeOut (WiQuery, JQuery) - PullRequest
1 голос
/ 23 июня 2011

У меня есть DIV и я хочу показать listItem-Panel, и если я нажму на DIV, listItem-Panel будет заменена на listItemDetail-Panel.По этой причине DIV содержит Child-DIV с Wicket: ID = curPanel.

    div.add(new AjaxEventBehavior("onclick") {
        @Override
        protected IAjaxCallDecorator getAjaxCallDecorator() {
            return new AjaxCallDecorator() {

                @Override
                public CharSequence decorateScript(final CharSequence script) {
                    return String.format("$('#%s').fadeOut(1000, function(){ %s });", div.getMarkupId(), script);
                }

            };
        }

        @Override
        protected void onEvent(final AjaxRequestTarget target) {
            final Panel curPanel = (Panel) div.get("curPanel");

            if (curPanel.getClass().equals(listItemDetailPanel.class)) {
                curPanel.replaceWith(listItemPanel);
            } else {
                curPanel.replaceWith(listItemDetailPanel);
            }

            target.addComponent(div);
            target.appendJavascript("new Effect.FadIn($('" + div.getMarkupId() + "'))");
        }
    });

Я использую AjaxCallDecorator для постепенного исчезновения DIV (который содержит listItemPanel или listItemDetailPanel).После этого панель будет заменена другой, а затем через fadeIn появится DIV.

Но это проблема!Что я должен сделать, чтобы исчезнуть в DIV после Ajax-Replacement?

Вы можете увидеть вызов target.appendJavascript (), но это не сработало!

Мне нужно решение для Wicket/ WiQuery.Я знаю решение для jQuery и хочу принять их.

Спасибо Кристоф

1 Ответ

0 голосов
/ 23 июня 2011

Используйте target.prependJavaScript (). Это выполняется перед заменой DOM. Хотя #appendJavaScript () равно после .

Кроме того, с 1.5-RC5 Wicket поддерживает PubSub в своем Javascript и публикует событие для каналов "/ dom / node / removal" и "/ dom / node / Added" соответственно до и после замены DOM.

Вы можете подписаться (используйте IHeaderResponse, чтобы добавить этот Javascript на свою страницу): Wicket.Event.subscribe (ChannelName);

где 'channelName' - это либо полностью определенное имя, как указано выше, либо '*', который будет прослушивать все каналы.

...