vaadin: интегрировать угловые JS с помощью пользовательского макета

0

Я попытался интегрировать приложение углового js в vaadin, используя специальный макет, например:

VerticalLayout mainLayout = new VerticalLayout();
    mainLayout.setMargin(true);
    mainLayout.setWidth("1380px");
    setCompositionRoot(mainLayout);
    Panel panel = new Panel();

    CustomLayout layout = null;
    try {
         String dynamicHtml = "<div ng-app=\"app\">..........</div>";
         layout = 
      new CustomLayout(new   ByteArrayInputStream(dynamicHtml.getBytes()));
    } catch (IOException e) {
        logger.error("could not create custom layaout", e);
    }
 panel.setContent(layout);
 mainLayout.addComponent(panel);
importJs();

public void importJs() {
String PATH_TO_JS_SCRIPT = jsURL+"?tata=" + new Date();
String script = "try{var fileref=document.createElement('script');";
script += "fileref.setAttribute(\"type\",\"text/javascript\");";
script += "fileref.setAttribute(\"src\", \"" + PATH_TO_JS_SCRIPT + 
    "\");";
script += "document.getElementsByTagName(\"head 
\")[0].appendChild(fileref);}catch(e){alert(e);}";
Page.getCurrent().getJavaScript().execute(script);
}

Я импортирую скрипт js с помощью метода importJs. При первом доступе к странице загружается файл js, и он работает. Во второй раз он не работает. Как будто скрипт не импортируется. Я не вижу, что не так в моем коде? Используя аннотацию Javascript, у меня такая же проблема. Я использую vaadin 7.6.5 java 7

Теги:
vaadin

2 ответа

0
Лучший ответ

Файл Js включался только один раз и только один раз в течение жизненного цикла страницы. Чтобы превзойти этот скрипт каждый раз, когда мы показываем страницу, которую я использую:

  if(typeof angular != 'undefined'){
       angular.bootstrap(document.getElementById('swdId'), ['app']);"
   }

Проблема исправлена

2

Вставка углового кода внутри CustomLayout - плохая идея.

Я бы рекомендовал прочитать текст: Vaadin и AngularJS - счастливы вместе.

Существует дополнительный модуль, который позволяет сочетать лучшие из Vaadin и AngularJS: Vaangular

  • 0
    Спасибо Драган за ваш ответ. Я уже читал о Vaangular. Я попробовал. Но это зависит от Java 8. Я использую Java 7.
  • 0
    В любом случае CustomLayout вам не поможет. Вы также можете попробовать интегрировать Angular-компонент, как любой другой компонент java-скрипта, как описано в vaadin.com/docs/-/part/framework/gwt/gwt-javascript.html Также я не совсем уверен, что Vaangular совместим только с java 8. Вы уверены, что?

Ещё вопросы

Сообщество Overcoder
Наверх
Меню