#extjs
#extjs
Вопрос:
Привет, у меня есть панель, и я хочу прокрутить до определенного postiton на этой панели, как мне это сделать
var tabs= new Ext.Panel({
id:id,
title:text,
autoScroll:true,
iconCls:'windowIcon',
closable:true,
closeAction:'hide'
});
Ответ №1:
Задайте для свойства scrollTop тела панели количество пикселей, которое вы хотите прокрутить вниз:
// Scroll the body down by 100 pixels.
tabs.body.dom.scrollTop = 100;
Комментарии:
1. уже пробовал это, но, похоже, не работает … эта панель является частью панели вкладок, которую я динамически добавляю в tabpanel .. используя метод add
2. Вероятно, вам будет лучше всего опубликовать более подробный пример кода в вашем вопросе. Простое нахождение на панели вкладок не повлияет на возможность установки положения прокрутки. Если вы добавляете панель, не делая ее активной немедленно, то вам может потребоваться сделать что-то вроде установки deferredRender в false на TabPanel, но трудно сказать, в чем проблема, не видя, как вы добавляете панели и как вы пытаетесь установить scrollTop.
Ответ №2:
Другой вариант — использовать здесь функцию scrollTo(),
http://docs.sencha.com/extjs/3.4.0 /#!/api/Ext.Element-метод-scrollTo
например
Ext.getCmp('graph_panel').body.scrollTo('left',250);
Ext.getCmp('graph_panel').body.scrollTo('top',200);
Но функция scrollTo() не выполняет связанную проверку, чтобы убедиться, что прокрутка находится в пределах диапазона прокрутки этого элемента, в то время как функция scroll() выполняет, следовательно, лучше всего использовать функцию scroll().
например
Ext.getCmp('graph_panel').body.scroll('left',300);
Ext.getCmp('graph_panel').body.scroll('bottom',300);
Комментарии:
1. для чего используется представленное здесь ‘body’?
2. ‘body’ — это тело панели, которую вы хотите прокрутить. Я действительно не понимаю, о чем вы пытаетесь спросить. Можете ли вы уточнить свой вопрос?
Ответ №3:
Учтите, что родительская панель имеет ограниченный размер, например 400px x 400px, а дочерняя панель доступна внутри родительской панели размером 1000px x 1000px. таким образом, прокрутка, выполняемая родительской панелью, тогда код должен выглядеть следующим образом…
Ext.getCmp('id_of_Parent_panel').scrollBy(500, 500, true);
здесь scrollBy (значение x = 500, значение y = 500,анимация = true), таким образом, дочерняя панель прокручивается по диагонали (практически сначала по горизонтали, затем по вертикали) родительской панелью…
Следующий пример использовался для более глубокого понимания этой концепции… Я использую ExtJS 4.2.1
Ext.onReady(function () {
Ext.create('Ext.panel.Panel', {
title:'Parent',
height: 200,
autoScroll: true,
width: 700,
id:'Parent',
renderTo: Ext.getBody(),
items: [{
xtype: 'panel',
title: 'Child',
height: 1000,
width: 1000,
items:[{
xtype: 'button',
text: 'Please Scroll me....',
listeners: {
click: {
fn: function () {
Ext.getCmp('Parent').scrollBy(500, 500, true);
}
}
}
}]
}]
})
});
Ответ №4:
Вы можете добавить preserveScrollOnReload
свойство config в view config.
viewConfig: {
preserveScrollOnReload: true
}