extjs4捕捉面板上的滚动事件

时间:2013-11-21 09:24:17

标签: extjs extjs4

我有一个tabpanel,在不同的标签上有聊天。每个标签面板都有一个聊天,讨论有时非常长,所以,在我的initComponent中,我有一个代码可以连续滚动到底部,这样我就可以显示最新消息:

setInterval ->
    this.scrollBy 100000, 100000
, 100

适用于它应该做的事情。问题是我有时想看到我之前谈过的内容,我必须滚动到顶部,但这段代码显然不会让我。我实现了一个钩子:

setInterval ->
    if not this.autoscroll_disabled
        this.scrollBy 100000, 100000
, 100

现在我只需要在用户触发我的面板上的滚动时捕获事件,这样我就可以将autoscroll_disabled设置为true,直到他再次滚动回到底部。任何想法如何在extjs中的面板上捕获滚动事件?

1 个答案:

答案 0 :(得分:3)

Ext.require('*');

Ext.onReady(function () {
    var content = [],
        i = 1;

    for (; i <=100; ++i) {
        content.push('Line ' + i);
    }

    var p = new Ext.panel.Panel({
        renderTo: document.body,
        width: 200,
        height: 200,
        autoScroll: true,
        title: 'Foo',
        html: content.join('<br />')
    });

    p.getTargetEl().on('scroll', function(e, t) {
        var height = p.getTargetEl().getHeight();
        if (height + t.scrollTop >= t.scrollHeight) {
            console.log('bottom');
        }
    });
});