Search code examples
javascriptsencha-touch-2

Sencha Touch list and scrollToRecord


I have a long sencha touch list and I am trying desperately to scroll that list into somewhere in the middle on startup.

The function

btnScroll:function() {
    var list = Ext.getCmp("myList");
    var position = 4;
    list.scrollToRecord(list.getStore().getAt(position));
}

works if I tap the button: scrollBtn.setHandler(btnScroll);, but it does not work in

MyList.constructor:function() {
    ...
    this.callParent();
    this.btnScroll();
}

It just fails without error message. Same goes if I do it in the calling function:

btnOpenList:function() {
    var list = new MyList();
    list.show();
    list.btnScroll();
}

It works sometimes(!) if I use setTimeout(this.btnScroll,70); instead, but never if I use setTimeout(this.btnScroll,50); or setTimeout(this.btnScroll,120);

I think it happens because the list elements are not rendered/positioned. But I did not find any afterrender event.

So how would I define a scroll position in which the list should start?


Solution

  • You could do it in painted event. just add to your list or to container that contains all components that u need to bind the painted event.. and then get your list there and add event to btn.. or whatever you want.. by the template:

    element.clearListeners();
    element.addListener('tap',function(){
        //...
    });