图书馆版本:
jQuery:2.1.1
DataTables:1.10.1-dev
dataTablesTableTools:2.2.1
dataTables.dataTables.editor.min.js:1.2.3
我正在尝试使用带有Backbone,RequireJS和Datatable的datatableseditor实现CRUD操作。但是我收到错误消息:
$.fn.dataTable.Editor is not a constructor"
可能是什么原因?
这是我的配置:
require.config({
baseUrl: 'js',
paths: {
jquery: 'vendor/jquery.min',
datatables: 'vendor/jquery.dataTables.min',
datatablesTableTools: 'vendor/dataTables.tableTools.min',
datatablesEditor: 'vendor/dataTables.editor.min'
},
shim: {
jquery : {
exports : '$'
},
datatables: {
deps: [
'jquery',
]
},
datatablesTableTools: { deps: ['datatables'] },
datatablesEditor: { deps: ['datatables'] }
}
});
使用如下:
require(["jquery", "datatables"], function () {
var editor = new $.fn.dataTable.Editor( {
"ajax": "table.line.php"
} );
$('#myGrid').dataTable( {
"aaData": [
['Trident', 'Internet Explorer 4.0', 'Win 95+', 4, 'X'],
['Trident', 'Internet Explorer 5.0', 'Win 95+', 5, 'C']
],
"aoColumns": [
{ "sTitle": "Engine" },
{ "sTitle": "Browser" },
{ "sTitle": "Platform" },
{ "sTitle": "Version" },
{ "sTitle": "Grade" }
],
"tableTools": {
"sRowSelect": "os",
"aButtons": [
{ "sExtends": "editor_create", "editor": editor },
{ "sExtends": "editor_edit", "editor": editor },
{ "sExtends": "editor_remove", "editor": editor }
]
}
});
});
答案 0 :(得分:1)
我认为你在依赖表中犯了一个错误。在你的第二个代码中,它应该是这样的:
require(["jquery", "datatablesEditor"], function () {
[...]
而不是
require(["jquery", "datatables"], function () {
[...]
答案 1 :(得分:0)
我已经检查过,它更加恶毒。例如,当您查看插件datatables-fixedcolumns的源代码时,会指定其名称,因此您需要使用它而不是您自己的别名/名称。
源代码dataTables.fixedColumns.js:
[...]
// Define as an AMD module if possible
if ( typeof define === 'function' && define.amd ) {
define( 'datatables-fixedcolumns', ['jquery', 'datatables'], factory );
}
else if ( jQuery && !jQuery.fn.dataTable.FixedColumns ) {
// Otherwise simply initialise as normal, stopping multiple evaluation
factory( jQuery, jQuery.fn.dataTable );
}
[...]
所以在你的requirejs.config中,你需要写这个:
[...]
paths: {
jquery: 'vendor/jquery.min',
datatables: 'vendor/jquery.dataTables.min',
datatables-fixedcolumns: 'vendor/dataTables.fixedColumns'
[...]
而不是
[...]
paths: {
jquery: 'vendor/jquery.min',
datatables: 'vendor/jquery.dataTables.min',
datatablesFixedColumns: 'vendor/dataTables.fixedColumns'
[...]