2015-12-09 52 views
1

我正在嘗試使用這個data table。 但是有多個JS資源需要,我不知道如何配置RequireJS?我試圖創建一個墊片,但表格沒有渲染。如何使用require JS爲數據表配置多個源?

下面是需要兩個文件:

jquery.dataTables.min.js 

dataTables.bootstrap.min.js 

到目前爲止,我有這部分的工作和使用以下配置渲染:

require.config({ 

    paths: { 
     jquery: 'https://code.jquery.com/jquery-1.11.3.min', 
     dataTable: 'https://cdn.datatables.net/1.10.10/js/jquery.dataTables.min', 

      // How do I create a shim for this? 
     dataTableBootstrap: 'https://cdn.datatables.net/1.10.10/js/dataTables.bootstrap.min' 

    } 
}); 

實例化在這裏:

require(["jquery", "dataTable"], function ($) { 

    $(function() { 

     $('#example').dataTable({ 
      "pagingType": "simple_numbers", 
      scrollY:  '50vh', 
      scrollCollapse: true, 
      "scrollX": true, 
      "bPaginate": true, 
      "bFilter": false, 
      "bInfo": true 
     }); 

}); 

回答

1

你不需要爲任何這些填充墊片。他們被認爲是re​​quirejs模塊,並且管理他們自己的依賴而不是你。它們都有universal module definition格式。它們都使用define()創建自己作爲require模塊,並試圖獲取它們的依賴關係。這個依賴項被命名,它的名字是paths requirejs配置中定義的路徑或名稱。

現在從這些庫中我可以找到他們需要的模塊名稱。

dataTable boostrap需要2個依賴項["jquery","datatables.net"]。 jQuery的定義很好,在你的paths配置中,但是datatables.net無處可找,因爲你爲它定義了不同的名稱dataTable

這意味着你的dataTable路徑需要改變爲datatables.net

datatables.net: 'https://cdn.datatables.net/1.10.10/js/jquery.dataTables.min', 

這樣,所有你需要定義/要求爲依賴是jquerydataTableBootstrap

define(["jquery", "dataTableBootstrap"], function ($) { 
    // code here 
} 

這應該可以解決問題,但我雖然沒有測試它。

至於墊片。它只需要用於非requirejs(非AMD)depresnies,因爲您需要自己指定它們的依賴關係。 AMD模塊反而管理他們的依賴。

+0

我對這行有點困惑。 'dataTables.bootstrap.min.js它是[「jquery」,「datatables.net」]'。我把這個放在墊片中,但你說我不需要墊片? – Asynchronous

+0

好吧,你不需要墊起他們只是定義他們的路徑。它們被requirejs認可,因爲它們已經是requirejs模塊。如果你沒有requirejs模塊,並且你想在requirejs模塊中使用它,Shim是有用的。你的問題在於他們自己在管理他們的依賴關係,但他們正在尋找你在你的requirejs配置中定義的不同名稱。他們正在尋找名爲'datatables.net'的模塊,但是您使用名稱'dataTable'定義了該模塊。不同的名稱= requirejs無法找到它。 – Mior

+0

好吧!爲了清晰起見,非常感謝你。現在正在按需要工作。 – Asynchronous

相關問題