我正在使用framework7日历并在声明日历时需要根据使用php动态生成的输入中的当前日期值来设置值。这是有效的,但问题是当没有设置日期时,空字符串不应该定义日期为1969年12月31日。我已经尝试基于if语句发送空值但它也不起作用。该函数唯一的工作方式是设置有效日期或者不完全设置参数。问题是如何更改以下内容以仅在值为空或为空时声明值参数。
if($('input[name=session-date]').val()!=""){
sessionDate = Date.parse($('input[name=session-date]').val());
alert("sessionDate set");
} else {
sessionDate = null;
alert("sessionDate NOT set");
}
//define call to calendar function with parameters
var calendarInline = myApp.calendar({
value: [sessionDate],
//etc.,
});
我试过了:
if($('input[name=session-date]').val()!=""){
sessionDate = Date.parse($('input[name=session-date]').val());
alert("sessionDate set");
} else {
sessionDate = null;
alert("sessionDate NOT set");
}
//define call to calendar function with parameters
var calendarInline = myApp.calendar({
if(sessionDate){
value: [sessionDate],
}
//etc.,
});
答案 0 :(得分:2)
您无法在对象定义中有条件地设置对象参数,但您可以在myApp.calendar
内执行IIFE,它会返回您的对象,如下所示:
var calendarInline = myApp.calendar((function() {
var obj = {
//values...
}
if(sessionDate) {
obj.value = [sessionDate];
}
return obj;
})())
或者,您可以在初始化calendarInline
之前创建并有条件地构建对象,然后将对象传递给myApp.calendar()
答案 1 :(得分:0)
有两种方法可以使用默认值调用函数。在ES6中,您具有参数的默认值,或者在ES5中,您可以使用某些逻辑短路。首先,您要创建一个包装函数来调用库方法。
在ES6中你可以这样做;var celendarCall = function(sd = myBirthDay) {myApp.calendar({value:[sd],...})},
calendarInline = calendarCall(sessionDate);
因此,如果您未向calendarCall
提供参数,则会使用myBirthDay
作为默认值。
或者在ES 5中你也可以像
那样做var celendarCall = function(sd) {myApp.calendar({value:[sd],...})},
calendarInline = calendarCall(sessionDate || myBirthDay);
因此,如果sessionDate
为undefined
或任何虚假,则会使用myBirthDay
作为默认参数来调用calendarCall
函数。