特定元素的忙碌指示器(检票口)

Busy Indicator on specific Elements (Wicket)

我正在按照本指南 https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=87917 及其目前的工作进行操作。 我如何修改此代码,我不再对 ajax 调用做出全局反应,而是例如仅对 3 个特定按钮做出反应。

window.onload = setupFunc;

function setupFunc() {
    // ? $('.test').on('click',clickFunc);
    hideBusysign();
    Wicket.Event.subscribe('/ajax/call/beforeSend', function(attributes, jqXHR, settings) {
        showBusysign();
    });
    Wicket.Event.subscribe('/ajax/call/complete', function(attributes, jqXHR, textStatus) {
        hideBusysign();
    });
}

function hideBusysign() {
  $('#loader').hide();
}

function showBusysign() {
    $('#loader').show();
}

function clickFunc(eventData) {
    var clickedElement = (window.event)? event.srcElement: eventData.target;
    if ((clickedElement.tagName.toUpperCase() == 'BUTTON' || clickedElement.tagName.toUpperCase() == 'A' || clickedElement.parentNode.tagName.toUpperCase() == 'A' || (clickedElement.tagName.toUpperCase() == 'INPUT' && (clickedElement.type.toUpperCase() == 'BUTTON' || clickedElement.type.toUpperCase() == 'SUBMIT'))) && clickedElement.parentNode.id.toUpperCase() != 'NOBUSY') {

        showBusysign();
    }
}

实施 IAjaxIndicatorAware 以在每个组件的基础上显示 Ajax 指标:

https://ci.apache.org/projects/wicket/guide/6.x/guide/ajax.html#ajax_4

您可以使用传递的 attributes 对象。它有一个名为 c 的 属性(对于 'component')——这是导致 Ajax 调用的 HTML 元素的 ID。

所以你可以这样做:

if (jQuery('#' + attributes.c).hasClass('showIndicator')) { 
    showBusysign(); 
}