javascript - 在一个项目中初始化多个 DataTable 对象
问题描述
在 ASP.NET Core MVC 项目中,我对对象使用多个视图JQuery's DataTables
。以前,所有这些表都是在每个视图下方使用一点 javascript 初始化的(此代码位于 10-15 个视图的底部):
<script>
$(document).ready(function () {
$('#table').DataTable();
});
</script>
现在,我们想更改整个项目的一些设置,所以我想摆脱所有单独的代码片段并从一个 javascript 初始化 DataTable 对象。我想出了一个解决方案,但我想知道这是否是最好的方法,如果不是,最佳实践包括什么。
我创建了一个小的 javascript 文件,该文件加载到我的_layout.chshtml
文件中,它检查是否存在 html 表格元素(由 .net core mvc 中的剃刀化妆自动生成):
$(document).ready(function () {
// This snippet checks whether the html of a view contains
// a #table element (id tag).
if ($('#table').length) {
$('#table').DataTable({
"pageLength": 50
// other settings
});
}
});
这是这样做的正确方法吗?
谢谢你的帮助!
解决方案
我认为你这样做的方式是正确的,但首先
你应该考虑你是否在所有页面中都需要这个?因为将它添加到您的布局页面,每次请求任何页面时都会加载它,这会为您的页面增加至少 100kb-1MB。
其次,您不需要if($(..).length)
JQuery 会自动执行此操作
我对这种情况的建议是首先使用一个类而不是一个 ID,然后将您的 JS 代码放在布局页面中,但不要在此处加载您的脚本,将它们加载到在那里使用它们的页面上,然后在初始化之前检查 DataTable 是否是加载与否。
推荐阅读
- google-apps-script - 谷歌表格程序在运行时不起作用
- c# - 将 json(具有多个级别)转换为 List c#
- c - dma_map_single 是否总是返回与 dma_alloc_coherent 相同的总线地址?
- reactjs - 如何:使用 Jest 从子组件回调调用测试父组件的方法?
- java - Java JBoss 应用程序卡在 RMI 操作中的套接字读取
- codeigniter - 如何在codeigniter中使用mpdf在视图页面中显示样式?
- javascript - 在 React 中保存状态之前调整图像大小
- sql-server - 与 PowerShell 的按需 SQL 快照复制同步
- css - 媒体查询不适用于 iPad 和三星 Galaxy Tablet A7 纵向模式
- jupyter-notebook - 获取“/bin/bash: mkdirTensorflow/workspace/images/collectedimageshello: 没有这样的文件或目录”