Пользовательский компонент Vaadin – сохраните доступ к переменной javascript

Я пишу собственный компонент на основе Leaflet.browser.print, и у меня есть вопрос о том, как сохранить доступ к некоторым объектам, которые я инициализирую в JavaScript.

Как вы можете видеть в приведенном ниже коде, я создаю экземпляр класса LBrowserPrintImport и выполняю скрипт, который инициализирует переменную bp. Эту переменную следует снова использовать в функции Java print(). Но я не нашел никакой информации о том, как его хранить.

Есть ли у вас какие-либо идеи?

Вот мой код:

@NpmPackage(value = "leaflet.browser.print", version = "2.0.2")
@JsModule("leaflet.browser.print/dist/leaflet.browser.print.min.js")
public class LBrowserPrintImport extends Component {

    private static final long serialVersionUID = 1L;
    
    public LBrowserPrintImport(
            final LMap map,
            final LBackendOptions backendOptions
            ) {
        super();
        getElement().executeJs("let bp = L.browserPrint($0, $1);", "map", "parameters");
        // How to store bp here?
    }
    
    public void print() {
        getElement().executeJs("bp.print(L.BrowserPrint.Mode.Landscape());");
    }
}

🤔 А знаете ли вы, что...
JavaScript можно использовать для манипуляции DOM (Document Object Model), что позволяет изменять содержимое и структуру веб-страницы.


1
67
1

Ответ:

Решено

Вы можете прикрепить переменную к какому-либо элементу, например к корневому элементу компонента или глобальному объекту, например window: executeJs("window.bp = L.browserPrint($0, $1);