Вопрос по – JSNI GWT jquery

4

У меня есть файл jQuery для создания эффекта флип-карты, и я изменил его на JSNI, использую встроенную функцию, но с ошибкой. Я не знаю что не так. Кто-нибудь может мне помочь? Это моя родная функция:

public native void flip() /*-{
$(document).ready(function () {
    $('#nav-list-example div div.back').hide().css('left', 0);

    function mySideChange(front) {
        if (front) {
            $(this).parent().find('div.front').show();
            $(this).parent().find('div.back').hide();

        } else {
            $(this).parent().find('div.front').hide();
            $(this).parent().find('div.back').show();
        }
    }

    $('#nav-list-example div').hover(
        function () {
            $(this).find('div').stop().rotate3Di('flip', 250, {direction: 'clockwise', sideChange: mySideChange});
        },
        function () {
            $(this).find('div').stop().rotate3Di('unflip', 500, {sideChange: mySideChange});
        }
    );
});
         }-*/;

Ваш Ответ

2   ответа
7

JSNI 101: $wnd.$($doc).ready(function($) {…

С помощью$ в качестве аргумента функции обратного вызова должно разрешать использование$ внутри функции вместо$wnd.$.

(Под GWTP) Есть идеи, почему мне пришлось использовать ViewImpl # onAttach вместо $ .ready? Смотрите ответ на мой другой вопрос Stackoverflow.com / а / 35394537/1357094. Благодарност cellepo
Похоже, мой ответ (связанный с комментарием выше) заключается в том, что отложенная загрузка GWTP означает, что DOM может быть загружен до того, как будут загружены все представления / докладчики. Поэтому для GWT необходим ViewImpl # onAttach вместо $ .ready cellepo
Это верно для всех приложений GWT, так как onModuleLoad вызывается не раньше, чем DOMContentLoad, и, возможно, после. Thomas Broyer
ХОРОШО. Итак, как в этом случае ожидается, что использование $ .ready () будет иметь все элементы в DOM при вызове его обратного вызова, если onModuleLoad () важен для полной готовности элемента DOM? Если я что-то упустил? Идея состоит в том, чтобы убедиться, что элемент находится в DOM, прежде чем делать выборку $ jQuery? cellepo
4

Я всегда использую это:

$wnd.jQuery($doc).ready(function(){});

Внутри функции вы можете создать псевдоним для jQuery, наприме

function(){
  var _ = $wnd.jQuery;
  // go on....
}

Надеюсь, это поможет :

BTW: так мы это сделали в GWT-Bootstrap.

Похожие вопросы