Drupal 8完整日历视图-在运行时更改Ajax Url

时间:2019-01-18 09:16:42

标签: fullcalendar jquery-ui-dialog drupal-8

当您在drupal中使用“ use-ajax”类在对话框中创建链接时,页面加载时Drupal会初始化ajax链接。 我想更改ajax请求的网址以更改广告位日期。 下面的示例正在运行(在(Drupal.ajax中的var j之间){)之间,但是我需要更好的代码方式。

我正在使用fullcalendar_view模块,并且我正在更改模块代码,fullcalendar已经为$('#calendar-add-event')创建了一个链接,我只是使用相同的href,接下来要为$(' #calendar-add-event2')和下一次触发点击。

fullcalendar.html.twing

<div class="fullcalendar-bottom-btn add-event-btn">
<a id="calendar-add-event"  href="{{ language }}fullcalendar-view-event-add?entity={{ entity_id }}&bundle={{ options.bundle_type }}&start_field={{ options.start }}&end_field={{ options.end }}&destination={{ path('<current>') }}" class="use-ajax" data-dialog-type="dialog" data-dialog-renderer="off_canvas" data-dialog-options="{&quot;width&quot;:400}">{{ 'Add event'|t }}</a>
<a id="calendar-add-event2"  href="{{ language }}fullcalendar-view-event-add?entity={{ entity_id }}&bundle={{ options.bundle_type }}&start_field={{ options.start }}&end_field={{ options.end }}&destination={{ path('<current>') }}" class="use-ajax" data-dialog-type="dialog" data-dialog-options="{&quot;width&quot;:400}">{{ 'Add event triger'|t }}</a>
</div>

fullcalendar_view.js

$("#calendar").dblclick(function () {
    if (slotDate && drupalSettings.eventBundleType && drupalSettings.dblClickToCreate && drupalSettings.addForm !== '') {
        var date = slotDate.format(); 
        href = $('#calendar-add-event').attr('href');
        resHref = href.split('?');
        ajaxLink = resHref[0] + '?start=' + date + '&' + resHref[1];
        $('#calendar-add-event2').attr('href', ajaxLink);
        for (var j in Drupal.ajax) {
            if (j == 'instances') {
                for (var t in Drupal.ajax[j]) {
                    try {
                        if (Drupal.ajax[j][t].selector == '#calendar-add-event2') {
                            // console.log(Drupal.ajax[j][t]);
                            // console.log(t);
                            // console.log(Drupal.ajax[j][t]);
                            Drupal.ajax[j][t].options.url = ajaxLink + '&_wrapper_format=drupal_dialog';
                        }
                    } catch (err) {
                        console.log(Drupal.ajax[j]);
                    }
                }
            }
        }
        $('#calendar-add-event2').trigger('click');
        $('body').prepend("<div id='child-div'></div>");
    }
});

0 个答案:

没有答案