如何在DataTable配置选项中使用if条件判断实现动态参数设置
问题核心原因
JavaScript 对象字面量语法不允许直接在对象的大括号内部写 if 条件判断语句,你原有写法属于语法错误,因此配置不生效。
解决方案
以下两种方案均可实现需求,可根据你的项目环境选择:
方案1:先声明基础配置,再条件追加属性(兼容性最好,无ES6语法要求)
// 先定义无特殊条件的基础配置 const tableConfig = { "ordering": false, 'rowsGroup': [1,2,3], initComplete: function () { // 你原有initComplete内的代码直接保留 // ... } } // 单独做角色判断,符合条件就追加搜索默认值配置 if('{{ request.user.groups.all.0 }}' == 'student'){ tableConfig.oSearch = {'sSearch': '{{request.user.first_name}}'} } // 传入配置初始化DataTable $('#study-list').DataTable(tableConfig);
方案2:ES6 对象展开运算符+三元表达式(代码更精简)
如果你的项目支持ES6及以上语法,可以直接在配置内用如下写法:
$('#study-list').DataTable( { "ordering": false, 'rowsGroup': [1,2,3], // 满足学生角色条件时,展开oSearch配置;不满足时展开空对象,无额外影响 ...('{{ request.user.groups.all.0 }}' == 'student' ? {oSearch: {'sSearch': '{{request.user.first_name}}'}} : {}), initComplete: function () { // 你原有initComplete内的代码直接保留 // ... } }
内容的提问来源于stack exchange,提问作者leesuccess
相关产品推荐
相关产品推荐

