vaadin:使用自定义布局集成角度js

时间:2016-05-17 10:00:27

标签: javascript java angularjs vaadin

我尝试使用自定义布局将角度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);
}

我使用importJs方法导入脚本js。 我第一次访问该页面时,js文件已加载并且可以正常工作。 第二次,它确实有效。 好像脚本没有导入。 我的代码中没有看到什么问题? 使用Javascript注释我有同样的问题。 我用 vaadin 7.6.5 java 7

2 个答案:

答案 0 :(得分:2)

在CustomLayout中插入角度代码是个坏主意。

我建议阅读文字:Vaadin and AngularJS - happy together

有一个可用的插件,可以让你结合最好的Vaadin和AngularJS:Vaangular

答案 1 :(得分:0)

Js文件仅在页面的生命周期中包含一次且仅包含一次。 要在每次显示我使用的页面时执行此脚本:

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

问题已修复