我有一个tabpanel,在不同的标签上有聊天。每个标签面板都有一个聊天,讨论有时非常长,所以,在我的initComponent
中,我有一个代码可以连续滚动到底部,这样我就可以显示最新消息:
setInterval ->
this.scrollBy 100000, 100000
, 100
适用于它应该做的事情。问题是我有时想看到我之前谈过的内容,我必须滚动到顶部,但这段代码显然不会让我。我实现了一个钩子:
setInterval ->
if not this.autoscroll_disabled
this.scrollBy 100000, 100000
, 100
现在我只需要在用户触发我的面板上的滚动时捕获事件,这样我就可以将autoscroll_disabled
设置为true,直到他再次滚动回到底部。任何想法如何在extjs中的面板上捕获滚动事件?
答案 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');
}
});
});