Estou escrevendo um componente personalizado baseado em leaflet.browser.print e tenho uma dúvida sobre como manter o acesso a alguns objetos que inicializo em javascript.
Como você pode ver no código abaixo eu instancio a classe LBrowserPrintImport e executo um script que inicializa a variável bp . Esta variável deve ser usada na função java print() novamente. Mas não encontro nenhuma informação sobre como armazená-lo.
Você tem alguma ideia?
Aqui esta o meu codigo ate agora:
@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());");
}
}
Você pode anexar a variável a algum elemento como o elemento raiz do componente ou objeto global, como
window
:executeJs("window.bp = L.browserPrint($0, $1);