我在listeJNO
函数
beforeShowDay
变量
$('#calendrier').datepicker({
format: "dd/mm/yyyy",
weekStart: 1,
maxViewMode: 3,
language: "fr",
calendarWeeks: true,
beforeShowDay: function (date) {
for (var i = 0; i < listeJNO.length; i++) {
console.log(date >= listeJNO[i].Begin && date <= listeJNO[i].End);
if (date >= listeJNO[i].Begin && date <= listeJNO[i].End) {
return {
classes: 'morning-ferie'
};
}
}
}
但之前,我需要定义listeJNO
。我有一个函数,它实际上是getListeJNO()
。所以这就是我的问题,无论我将getListeJNO()
初始化listeJNO
中的数据,beforeShowDay
内的$('calendrier').datepicker({...})
选项始终先于listeJNO
答案 0 :(得分:0)
您是否尝试在beforeShowDay
内设置变量?我认为这会奏效。将listeJNO
var声明在beforeShowDay
函数之外,然后将其设置在该函数内。像这样:
beforeShowDay: function (date) {
//Set your variable in this function
listeJNO = getListeJNO();
for (var i = 0; i < listeJNO.length; i++) {
console.log(date >= listeJNO[i].Begin && date <= listeJNO[i].End);
if (date >= listeJNO[i].Begin && date <= listeJNO[i].End) {
return {
classes: 'morning-ferie'
};
}
}
}
答案 1 :(得分:0)
一个选项是在完成listeJNO的加载时初始化datepicker。 您可以通过返回一个promise并在“then”回调中设置datepicker来完成此操作。
首先创建将数据加载到listeJNO中的promise
var listeJNO;
var loadListeJNOpromise = new Promise(
function (resolve, reject) {
//load the data into listeJNO, then send it in the resolve callback
listeJNO = ....;
resolve('Load completed'); // fulfilled
//if soomething went wrong then reject it
//reject('Didnt work..');
}
);
然后消费这个承诺
//create a function thats sets the datepicker
var initializeDatepicker = function(){
$('#calendrier').datepicker({
format: "dd/mm/yyyy",
weekStart: 1,
maxViewMode: 3,
language: "fr",
calendarWeeks: true,
beforeShowDay: function (date) {
for (var i = 0; i < listeJNO.length; i++) {
console.log(date >= listeJNO[i].Begin && date <= listeJNO[i].End);
if (date >= listeJNO[i].Begin && date <= listeJNO[i].End) {
return {
classes: 'morning-ferie'
};
}
}
}
};
//declare a function which invokes the datepicker function in the promise
var initialize = function () {
loadListeJNOpromise
.then(function (fulfilled) {
console.log(fulfilled);
//call the datepicker initialize here
initializeDatepicker();
})
.catch(function (error) {
console.log(error);
});
};
//invoke the initilize
initialize();