gpt4 book ai didi

javascript - JQuery 小部件 : setting context in sub-widget

转载 作者:行者123 更新时间:2023-11-28 01:50:44 27 4
gpt4 key购买 nike

我有一个小部件,它基本上在元素上创建 JQuery 日期选择器,然后处理从 Web 服务检索数据以及根据返回的数据启用/禁用日期。

小部件的定义如下 - 一些简单的默认选项:

$.widget("XXXX.CalendarBooking", {
options: {
minDaysInAdvance: 0,
maxDaysInAdvance: 0,
productNumber: '',
url: '',
numberOfDays: 40
},
...

构造函数如下所示,它在元素上创建日期选择器,然后设置用于检索数据和处理(启用)日期的函数:

_create: function () {
this.element.datepicker({
dateFormat: 'dd MM yy',
firstDay: 1,
minDate: this.options.minDaysInAdvance,
maxDate: this.options.maxDaysInAdvance,
beforeShowDay: this._processDate,
onChangeMonthYear: this._changeMonthYear
});
...

processdate 函数如下所示:

_processDate: function (date) {
// get availability
if (!this._availability) {
$.ajax({
async: false,
type: "POST",
contentType: "application/json; charset=utf-8",
url: this.options.url,
data: '{ productNumber: "' + this.options.productNumber + '", startDate: "' + date.toJSON() + '", numberOfDays: ' + numberOfDays + ' }',
dataType: "json",
success: function (msg) {
_setAvailability(msg.d);
},
error: function (xhr, ajaxOptions, thrownError) {
_setAvailability('error');
}
});
}

但是,当调用 processdate 时,上下文不在小部件内,因此我无权访问这些选项。我这样做是否正确,或者有没有办法重载 processdate 函数,以便在设置 beforeShowDay 的回调时,我可以传入选项,并且它不会覆盖 JQuery 将传递给该函数的日期值?

最佳答案

您可以使用$.proxy来设置调用函数的上下文。试试这个:

beforeShowDay: $.proxy(this._processDate, this),

现在,在您的 _processDate 函数中,this 关键字将引用您的小部件。您可以使用 this.element 访问引发事件的元素。

关于javascript - JQuery 小部件 : setting context in sub-widget,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19725339/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com