2014-06-18 26 views
1

庫版本:
的jQuery 2.1.1
數據表:1.10.1-dev的
dataTablesTableTools:2.2.1
dataTables.dataTables。 editor.min.js:1.2.3

我試圖使用datatableseditor使用骨幹,RequireJS實現CRUD操作和Datatables.But我收到錯誤消息:

$.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 } 
     ] 
    } 
}); 
}); 

回答

1

我想你已經在你的依賴表犯了一個錯誤。在你的第二個代碼,應該是這樣的:的

require(["jquery", "datatablesEditor"], function() { 
[...] 

代替

require(["jquery", "datatables"], function() { 
[...] 
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' 
[...]