将 table 转换为 DataTable 的 js 函数放在哪里
Where to put a js function that converts a table into a DataTable
我在 Rails 4 项目的 Ruby 中为 jQuery 使用了一个名为 DataTables 的很棒的库。我对将标记转换为 DataTable 对象(设置自己的 classes 和 id)的函数放在哪里感到有点困惑。我把它放在 application.js 文件中,因为我希望这个功能在大多数应用程序视图中都可用,其中大部分是报告,但我不知道这是不是正确的地方。它有效,但在 application.js 评论中说:
// It's not advisable to add code directly here, but if you do, it'll
appear at the bottom of the compiled file.
var tabla = $('.tabla-reporte').DataTable( {
dom: 'Bfrtip',
buttons: [
{
extend: 'print',
autoPrint: false,
customize: function ( win ) {
$(win.document.body)
.css( 'font-size', '10pt' )
.prepend(
'<img src="http://datatables.net/media/images/logo-fade.png" style="position:absolute; top:0; left:0;" />'
);
$(win.document.body).find( 'table' )
.addClass( 'compact' )
.css( 'font-size', 'inherit' );
var medias = win.document.querySelectorAll('[media="screen"]');
for(var i=0; i < medias.length;i++){ medias.item(i).media="all" };
}
}
]
} );
显然 运行 该代码没有问题,因为如果它在当前加载页面的 DOM 中找不到 class 'tabla-reporte',它就会获胜什么都不做,只是不知道这是否符合 "rails convention".
您所要做的就是将以下代码添加到 assets
目录中的任何 .js
文件中。
$(document).ready(function(){
$('#myTable').DataTable();
});
此代码将使用 DataTables 转换具有 id = "myTable"
的任何 table 的样式。如果您有一些 table 不想应用此样式,则只需给它一个不同的 id
。提示:如果您在同一页面上有多个 table 应该使用数据表设置样式,那么您可以使用 class = "myTable"
代替。
不要向 application.js
文件添加除以下内容以外的任何内容:
//= require dataTables/jquery.dataTables
application.js
用于存储指令,而不是实际的脚本。当您的应用程序启动时,assets
目录中的所有内容都将聚合到一个大脚本中,因此您不必担心哪个 .js
文件包含 DataTables 代码,除非您设置了控制器特定资产。
我在 Rails 4 项目的 Ruby 中为 jQuery 使用了一个名为 DataTables 的很棒的库。我对将标记转换为 DataTable 对象(设置自己的 classes 和 id)的函数放在哪里感到有点困惑。我把它放在 application.js 文件中,因为我希望这个功能在大多数应用程序视图中都可用,其中大部分是报告,但我不知道这是不是正确的地方。它有效,但在 application.js 评论中说:
// It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the compiled file.
var tabla = $('.tabla-reporte').DataTable( {
dom: 'Bfrtip',
buttons: [
{
extend: 'print',
autoPrint: false,
customize: function ( win ) {
$(win.document.body)
.css( 'font-size', '10pt' )
.prepend(
'<img src="http://datatables.net/media/images/logo-fade.png" style="position:absolute; top:0; left:0;" />'
);
$(win.document.body).find( 'table' )
.addClass( 'compact' )
.css( 'font-size', 'inherit' );
var medias = win.document.querySelectorAll('[media="screen"]');
for(var i=0; i < medias.length;i++){ medias.item(i).media="all" };
}
}
]
} );
显然 运行 该代码没有问题,因为如果它在当前加载页面的 DOM 中找不到 class 'tabla-reporte',它就会获胜什么都不做,只是不知道这是否符合 "rails convention".
您所要做的就是将以下代码添加到 assets
目录中的任何 .js
文件中。
$(document).ready(function(){
$('#myTable').DataTable();
});
此代码将使用 DataTables 转换具有 id = "myTable"
的任何 table 的样式。如果您有一些 table 不想应用此样式,则只需给它一个不同的 id
。提示:如果您在同一页面上有多个 table 应该使用数据表设置样式,那么您可以使用 class = "myTable"
代替。
不要向 application.js
文件添加除以下内容以外的任何内容:
//= require dataTables/jquery.dataTables
application.js
用于存储指令,而不是实际的脚本。当您的应用程序启动时,assets
目录中的所有内容都将聚合到一个大脚本中,因此您不必担心哪个 .js
文件包含 DataTables 代码,除非您设置了控制器特定资产。