Не удается прокрутить в Javascript при использовании jScrollPane

Я пытаюсь использовать JScrollPane, чтобы упростить реализацию прокрутки таблицы в моем приложении. Некоторые таблицы настолько велики, что я реализую динамическую загрузку элементов таблицы. Загрузка работает правильно, однако, когда таблица загружается с новыми элементами, метод scrollToY(int) не работает:

Scroll = {

init: function (idComponente, componenteAAtualizar, comando) {
    var componente = $(PrimeFaces.escapeClientId(idComponente));
    componente.container = $(PrimeFaces.escapeClientId(idComponente + ":container"));
    componente.idComponenteAAtualizar = PrimeFaces.escapeClientId(componenteAAtualizar);
    componente.desativado = false;;
    componente.posicao=0;
    componente.comando = comando;

    componente.container[0].oncomplete = function (xhr, status, args) {
        var idEscapadoPainelLista = PrimeFaces.escapeClientId(idComponente);
        if (args != null)
            componente.desativado = args.desativarLiveScroll;
        componente.adicionarListenerScroll();
    }

    componente.adicionarListenerScroll = function () {
        $('.ui-datatable-scrollable-body').jScrollPane();
        $('.ui-datatable-scrollable-body').data('jsp').scrollToY(componente.posicao);
        $('.ui-datatable-scrollable-body').bind('jsp-scroll-y', componente.atualizarElementos);
    }

    componente.removerListenerScroll = function () {
        $('.ui-datatable-scrollable-body').unbind('jsp-scroll-y');
    }

    componente.atualizarElementos = function(event, scrollPositionY, isAtTop, isAtBottom) {
        if (!componente.desativado && isAtBottom){
            componente.posicao=scrollPositionY;
            componente.removerListenerScroll();
            comando();
        }
    };

    componente.adicionarListenerScroll();
}
};

Почему я не могу прокрутить до нужной позиции?


person brevleq    schedule 19.10.2013    source источник


Ответы (1)


Я решил проблему, используя JQuery для прокрутки до позиции вместо использования функции scrollToY jScrollPane. Итак, код изменился с этого:

componente.adicionarListenerScroll = function () {
    $('.ui-datatable-scrollable-body').jScrollPane();
    $('.ui-datatable-scrollable-body').data('jsp').scrollToY(componente.posicao);
    $('.ui-datatable-scrollable-body').bind('jsp-scroll-y', componente.atualizarElementos);
}

к этому:

componente.adicionarListenerScroll = function () {
        $('.ui-datatable-scrollable-body').scrollTop(componente.posicao);
        $('.ui-datatable-scrollable-body').jScrollPane();
        $('.ui-datatable-scrollable-body').bind('jsp-scroll-y', componente.atualizarElementos);
}
person brevleq    schedule 21.10.2013