Question

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?

Was it helpful?

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(){
    //...
});
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top