2014-07-06 42 views
1

我有兩個腳本文件lib_network.js和network.js。我在網絡.js中有一個draw()函數,它調用lib_network.js中的另一個函數。這兩個文件都使用d3.js函數完成某些任務。在Wicket Panel中包含Javascript庫

我加入這兩個以下列方式將文件檢票口面板

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的功能

遺漏的類型錯誤:未定義的不是函數

此外,css文件未正確加載。獲取語​​法錯誤,但語法正確,因爲我在文件中只添加了兩個類。

任何人都可以告訴我包含資源的正確方法。

我試過在cwiki和wicket指南中尋找答案。他們說了上述的方式,但它仍然不適合我。

+0

誰低估了它,可以請你告訴我原因 – beeCoder

+0

Upvoted,因爲這是一個很好的問題 – RobAu

回答

0
new JavaScriptResourceReference(SenseAlign.class, "network.css") 

您不應該爲CSS文件使用JavaScriptResourceReference,否則它將使用JavaScript壓縮器進行壓縮。改用CssResourceReference。

+0

謝謝!我將其更改爲CSS資源,並且工作正常。但是我仍然無法調用這個函數。 – beeCoder