我尝试根据if / else语句配置数据表按钮的状态。
数据表按钮对象:
buttons: [
{
text: "button text",
action: function (e, dt, node, config) {
button_action();
},
enabled: function () {
if (column_exists) {
this.enabled = true
} else {
this.enabled = false
}
}
}
]
使用此代码,我的按钮始终处于启用状态。如何根据if / else语句正确设置enabled
参数?
答案 0 :(得分:2)
当enabled
为真时,您希望column_exists
为真,反之亦然。
因此...
buttons: [
{
text: "button text",
action: function (e, dt, node, config) {
button_action();
},
enabled: !!column_exists
}
]
!!
纯粹是一种预防措施。它将任何值转换为布尔值。如果column_exists
已经是布尔值,则不需要它。
话虽如此,以下是反模式。
if (somethingBoolean) {
someValue = true;
} else {
someValue = false;
}
不要这样做。而只需写:
someValue = somethingBoolean;
或通过双重否定将任何值强制转换为布尔值,如上所示。
someValue = !!anyValue;
答案 1 :(得分:1)
你不想让enabled
成为一个函数,而是一个布尔值。
为此,您可以使用IIFE:
{
enabled: (function () {
if (column_exists) {
return true
} else {
return false
}
}())
// ^^
}
或者只是不使用if-else-statements而是使用三元运算符:
{
enabled: column_exists ? true : false
}
在您的情况下也可以简化为
{
enabled: Boolean(column_exists)
}