如何使用JavaScript与gwt Uibinder

时间:2012-04-16 16:31:08

标签: java javascript gwt uibinder

我想在我的应用程序中执行JavaScript,这是用GWT编写的。 这是以常规HTML工作的代码:

<html>
  <head>
  </head>

  <body>
    <ul>
      <li></li>
      <li></li>
      <li></li>
      <li></li>
      <li></li>
    </ul>
    <script src="jquery.js"></script>
    <script src="jquery.roundabout.js"></script>
    <script>
      $(document).ready(function() {
          $('ul').roundabout();
      });
    </script>
  </body>
</html>

(假设jquery.jsjquery.roundabout.js位于同一文件夹中。)

我有somePresentersomeView.javasomeView.ui.xml),我希望上面的代码可以在someView.ui.xml中使用。

我将上述代码复制粘贴到XML(<html>代码除外{标有} <g:HTMLPanel> 但JavaScript似乎没有被执行(我看到的只是在脚本之前的列表)。

我怎样才能让它发挥作用?

相关问题:我可以使用GQuery来解决这个问题 (比如:GQuery。$()。getScript(jquery.roundabout.js)加载外部js脚本)?

提前致谢

2 个答案:

答案 0 :(得分:7)

你不能在UiBinder中添加<script>,并期望看到它被加载和执行的原因与你在<script>中使用innerHTML HTMLPanel同样的表达式相同的原因(仅仅因为innerHTML和UiBinder会在引擎盖下使用ScriptInjector.fromUrl(GWT.getModuleBaseURL() + 'jquery.js').inject();

如果您需要动态加载脚本,请查看ScriptInjector

ScriptInjector

我认为GQuery使用{{1}}或类似地工作。

答案 1 :(得分:0)

我最终设法通过

来做到这一点
<script src="jquery.js"></script>
<script src="jquery.roundabout.js"></script>
project.html中的

然后在加载相关页面时(我的演示者)执行与JSNI调用相关的JavaScript。