2016-08-12 3 views

Antwort

4

Wie von Alexander vorgeschlagen, hat das Überschreiben beforeLayout und afterLayout für den übergeordneten Container den Trick gemacht.

beforeLayout: function() { 
    var me = this, 
     scroller = me.getScrollable(); 
    me.callParent(arguments); 
    if (scroller) { 
     me.savedScrollPos = scroller.getPosition(); 
    } 
}, 
afterLayout: function() { 
    var me = this, 
     scroller = me.getScrollable(); 
    me.callParent(arguments); 
    if (scroller && me.savedScrollPos) { 
     scroller.scrollTo(me.savedScrollPos); 
    } 
}, 
3

updateLayout ist nicht das gleiche wie refresh zu helfen, und preserveScrollOnRefresh nur bewahrt Rolle auf refresh. Sie könnten in ExtJS-Code schauen, wie sie es taten (sie "scrollen" nicht wirklich "bewahren", sie speichern die Scroll-Position und scrollen nach der Aktualisierung zurück zur korrekten Position) und implementieren dasselbe für updateLayout.

0

Um weitere Optionen für alle, die ähnliche Probleme abdecken:

das Layout in Frage

Wie bereits erwähnt ändern Avoid Ext.form validation scrolling to top, ändert manchmal nur die layout den Trick tun können.

Zum Beispiel bildet in ExtJS 4.x hatte anchor Layout standardmäßig angegeben (ExtJS 6 hat vbox), die die Form verursacht blättert auf Formularfeldüberprüfung nach oben, wenn Sie das Layout vbox ändern, ist es nicht blättern nach oben.

Layout Suspending

Wenn Sie eine Komponente haben, die nicht das Layout mit seiner Änderung aktualisieren muss, können Sie die suspendLayout Konfiguration verwenden.

Verwandte Themen