有条件地在对象中定义参数
Define Parameter in Object conditionally
我正在使用 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.,
});
您不能在对象定义内有条件地设置对象参数,但您可以在 myApp.calendar
内执行 IIFE,即 returns 您的对象,如下所示:
var calendarInline = myApp.calendar((function() {
var obj = {
//values...
}
if(sessionDate) {
obj.value = [sessionDate];
}
return obj;
})())
或者,您可以在初始化 calendarInline
之前创建并有条件地构造您的对象,然后将对象传递给 myApp.calendar()
有两种方法可以使用默认值调用函数。在 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
函数的默认参数。
我正在使用 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.,
});
您不能在对象定义内有条件地设置对象参数,但您可以在 myApp.calendar
内执行 IIFE,即 returns 您的对象,如下所示:
var calendarInline = myApp.calendar((function() {
var obj = {
//values...
}
if(sessionDate) {
obj.value = [sessionDate];
}
return obj;
})())
或者,您可以在初始化 calendarInline
之前创建并有条件地构造您的对象,然后将对象传递给 myApp.calendar()
有两种方法可以使用默认值调用函数。在 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
函数的默认参数。