2013-11-21 2 views
2

У меня есть табло с чатами на разных вкладках. Каждая вкладка Панель имеет чат и дискуссии иногда очень долго, так что, на мой initComponent, у меня есть код для непрерывной прокрутки вниз, так что я могу показать последние сообщения:extjs4 ловить событие прокрутки на панели

setInterval -> 
    this.scrollBy 100000, 100000 
, 100 

, который прекрасно работает для того, что он должен делать. Проблема в том, что я иногда хочу посмотреть, что я говорил раньше, и мне нужно прокрутить вверх, но этот код явно не позволил мне. Я реализовал крюк:

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

и теперь я просто поймать событие, когда пользователь запускает свиток на моей панели, так что я могу установить autoscroll_disabled истину, пока он не прокручивается обратно вниз снова, вероятно. Любая идея, как поймать событие прокрутки на панели в extjs?

ответ

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'); 
     } 
    }); 
}); 
Смежные вопросы