調用updateLayout()導致父容器「跳」到頂部。設置在Ext.Container.container的viewconfig似乎並沒有幫助updateLayout()導致父容器滾動到頂部
viewConfig: {
preserveScrollOnRefresh: true
},
調用updateLayout()導致父容器「跳」到頂部。設置在Ext.Container.container的viewconfig似乎並沒有幫助updateLayout()導致父容器滾動到頂部
viewConfig: {
preserveScrollOnRefresh: true
},
正如亞歷山大所建議的那樣,爲父容器重寫beforeLayout
和afterLayout
取得了訣竅。
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);
}
},
updateLayout
是不一樣的refresh
,並preserveScrollOnRefresh
僅保留上refresh
滾動。你可以看看ExtJS代碼他們是如何做到的(他們並不真正「保留」滾動,他們存儲滾動位置並在刷新後滾動回正確的位置),併爲updateLayout實現相同的功能。
爲了覆蓋更多的選項有任何類似的問題:
更改佈局
正如問題Avoid Ext.form validation scrolling to top提到的,有時只是改變layout
可以做的伎倆。
對於ExtJS的4.x的示例形式具有由缺省(ExtJS的6具有vbox
),這引起了形式滾動到頂部上的表單字段的驗證,如果你改變了佈局vbox
指定anchor
佈局,它不滾動到達頂點。
暫停佈局
如果你有一個組成部分,這並不需要更新其變動的佈局,則可以使用suspendLayout
配置。