【问题标题】:Including Javascript Library to Wicket Panel将 Javascript 库包含到检票面板
【发布时间】:2014-07-06 21:09:00
【问题描述】:

我有两个脚本文件 lib_network.js 和 network.js。我在网络 .js 中有一个 draw() 函数,它调用 lib_network.js 中的另一个函数。这两个文件都使用 d3.js 函数来完成某些任务。

我正在通过以下方式将这两个文件添加到检票面板

public static final JavaScriptResourceReference NETWORK_JS = new JavaScriptResourceReference(
            SenseAlign.class, "network.js");

    public static final JavaScriptResourceReference NETWORK_CSS = new JavaScriptResourceReference(
            SenseAlign.class, "network.css");

    public NetworkPanel(String id){ 
        super(id);

    }

    @Override
    public void renderHead(IHeaderResponse aResponse){
        super.renderHead(aResponse);

        aResponse.render(JavaScriptReferenceHeaderItem.forReference(D3Reference.D3_JS));
        aResponse.render(JavaScriptReferenceHeaderItem.forReference(JqueryReference.jQuery_JS));
        aResponse.render(JavaScriptReferenceHeaderItem.forReference(NetworkLibrary.LIB_NETWORK_JS));
        aResponse.render(JavaScriptReferenceHeaderItem.forReference(NETWORK_JS));
        aResponse.render(JavaScriptReferenceHeaderItem.forReference(NETWORK_CSS));

        String[] annotatorScript = new String[] { 
                "draw(\"" + getMarkupId() + "\")"};

        aResponse.render(OnDomReadyHeaderItem.forScript(StringUtils.join(annotatorScript, "\n")));
    }

当我尝试将 lib_network.js 中的函数调用为时出现错误

Uncaught TypeError: undefined is not a function

css 文件也没有正确加载。出现语法错误,但语法是正确的,因为我在文件中只添加了两个类。

谁能告诉我包含资源的正确方法。

我尝试在 cwiki 和 wicket 指南中寻找答案。他们说上面提到的方式,但它仍然对我不起作用。

【问题讨论】:

  • 谁投了反对票,请告诉我原因
  • 赞成,因为这是个好问题

标签: java javascript d3.js wicket


【解决方案1】:
new JavaScriptResourceReference(SenseAlign.class, "network.css")

您不应该对 CSS 文件使用 JavaScriptResourceReference,否则它将被 Javascript 压缩器压缩。请改用 CssResourceReference。

【讨论】:

  • 谢谢!我将其更改为 CSS 资源,它工作正常。但我仍然无法调用该函数。
猜你喜欢
  • 2012-07-23
  • 2013-10-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多