2014-01-28 2 views
3

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

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

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

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

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

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

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

+0

Это не может быть определена в момент вы звоните его. Иногда консоль может ввести вас в заблуждение, потому что все ресурсы страницы загружаются к тому времени, когда вы делаете что-то в консоли. –

+2

Вам не нужно ссылаться на него как '$ wnd. $'? –

+0

@SurrealDreams хорошая точка, но не здесь. Я загружаю jquery, когда приложение сначала инициализируется, а затем делает этот вызов после того, как пользователь инициализирует. – user717847

ответ

8

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

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

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