$ не определяется из JSNI; jquery уже присутствует

Я пытаюсь использовать Zurb Foundation с GWT. Виджеты Foundation javascript должны быть инициализированы после их рендеринга; поскольку я использую «одностраничный» подход, мне нужно вызвать метод инициализации основы после рендеринга нового контента.

Их документы показывают это как:

<script>
    $(document).foundation();
</script>

... который должен быть размещен в конце страницы.

Я сделал метод JSNI, который вызывает эту же функцию:

public static native void foundationInit() /*-{
    $(document).foundation();
}-*/;

Однако, когда это вызывается, я получаю сообщение об ошибке в консоли javascript: «$ не определено». Это сбивает с толку, потому что $ определенно определен; jquery загружен, и в консоли javascript я могу ввести «$(document).foundation()», чтобы запустить функцию. Так в чем проблема?


person user717847    schedule 28.01.2014    source источник
comment
Он может быть не определен в то время, когда вы его вызываете. Иногда консоль может ввести вас в заблуждение, потому что все ресурсы страницы загружаются к тому времени, когда вы что-то делаете в консоли.   -  person Surreal Dreams    schedule 29.01.2014
comment
Вам не нужно обращаться к нему как $wnd.$?   -  person Chris Martin    schedule 29.01.2014
comment
@SurrealDreams хороший момент, но здесь не тот случай - я загружаю jquery при первой инициализации приложения, а затем делаю этот вызов после инициализации пользователя.   -  person user717847    schedule 29.01.2014
comment
@ChrisMartin спасибо, вы привели меня к рабочему решению: $wnd.jQuery($doc).foundation() Если вы хотите опубликовать свой комментарий в качестве ответа, я приму его.   -  person user717847    schedule 29.01.2014


Ответы (1)


Вы должны ссылаться на объект jQuery $ как $wnd.$.

При доступе к окну браузера и объектам документа из JSNI вы должны ссылаться на них как $wnd и $doc соответственно. Ваш скомпилированный сценарий выполняется во вложенном фрейме, а $wnd и $doc автоматически инициализируются для правильной ссылки на окно и документ главной страницы.

http://www.gwtproject.org/doc/latest/DevGuideCodingBasicsJSNI.html

person Chris Martin    schedule 28.01.2014