关于特定元素的繁忙指标(Wicket)

时间:2016-11-02 10:39:54

标签: javascript 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();
    }
}

2 个答案:

答案 0 :(得分:2)

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

所以你可以这样做:

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

答案 1 :(得分:1)

实施IAjaxIndicatorAware以按组件显示Ajax指标:

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