iScroll:在项目之前放置滚动到第10个元素

时间:2018-07-31 10:26:39

标签: iscroll

我正在使用iScroll(探针)进行聊天(使用SignalR)。

当我添加新消息时没什么问题,但是当我到达iScroll实例的顶部时,我应该在前面的10条消息之前添加

添加元素后,我必须调用refresh()方法,并使用scrollTo()重新定位iScroll到第10条消息的位置,但不会触发它(scrollTo)。它仅在800ms超时时有效。 有人可以提出解决方案或另一种方法来实现此行为吗?

谢谢,这是一些伪代码:

chatScroll = new IScroll('.iscroll-wrapper-chat', {
        probeType: 3,
        tap: true,
        click: false,
        preventDefaultException: {
            tagName: /.*/
        },
        startY: this.maxScrollY
});

chatScroll.on('scroll',
    function () {
    var ms = this;
    //retrieve old elems with ajax if the top is reached
    if(ReachTop()){
        RetrievePreviousElements().success(function (data) {
            $(ms.scroller).prepend($(data)); //prepend the html
            var oldMaxScrollY = chatScroll.maxScrollY; // get the current maxScrollY to determinate the scrollTo position
            setTimeout(function () {//call the refresh method with 0 timeOut (from documentation)
                chatScroll.refresh()
                //if the scrollTo is executed immediately doesn't work
                setTimeout(function () {//I need thi 800mx timeout
                    chatScroll.scrollTo(0,chatScroll.maxScrollY - oldMaxScrollY,0);
                },800);
            },0);
        })
    }
})

0 个答案:

没有答案