我正在尝试使用此data table。
但是需要多个JS资源,我不确定如何为RequireJS
配置两者?我试图创建一个垫片,但桌子没有渲染。
以下是所需的两个文件:
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
} );
});
答案 0 :(得分:1)
你不需要为任何一个垫片。它们被识别为requirejs模块并管理它们自己的依赖项而不是您。它们都有universal module definition格式。他们都创建自己作为require模块与define()并尝试获得他们的依赖。这个依赖项已命名,它的名称是在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',
这样,您需要定义/要求作为依赖项jquery
和dataTableBootstrap
define(["jquery", "dataTableBootstrap"], function ($) {
// code here
}
这应该解决问题,但我没有测试它。
至于垫片。它仅适用于非requirejs(非AMD)depdencenies,因为您需要自己指定它们的依赖关系。 AMD模块改为管理他们的依赖。