#extjs #extjs5
#extjs #extjs5
Вопрос:
Я хочу открыть окно панели под кнопкой, которую я нажимаю, которая находится в заголовке. Панель должна отображаться под кнопкой (выровнена по заголовку): я пытаюсь :
{
xtype:'button',
height: '100%',
text: Strings.Notifications,
glyph: 'xf142@FontAwesome',
reference: 'settingsNotificationsButton',
cls :'headerButtonsCls',
listeners: {
click: function () {
new Ext.form.Panel({
width: 200,
height: 200,
title: 'Foo',
floating: true,
closable: false
}).show();
}
}
}
Но приведенный выше код отображает панель в середине экрана как модальную, которая мне не нужна (как я уже сказал, я хочу ее прямо под заголовком)
Итак, как этого добиться?
Спасибо.
Ответ №1:
Я взял ответ Музаффера за основу и добавил функцию для использования здесь координат событий:
var windowPanel = Ext.create('Ext.Panel', {
bodyStyle: 'background: #ffff00;',
border: true,
height: 200,
width: 200,
floating:true
});
Ext.create('Ext.Container', {
renderTo: Ext.getBody(),
items: [{
xtype: 'button',
text: 'Show/Hide Panel',
handler: function (btn, event) {
windowPanel.showAt(event.getXY())
}
}
]
});
Вот скрипка: https://fiddle.sencha.com/#fiddle/3a8jamp;view/editor
Комментарии:
1. да, я уже понял это! в функциях обратного вызова необходимо различать событие и целевые параметры, хотя вместо этого я использовал target
Ответ №2:
Это полезно для вас?
var windowPanel = Ext.create('Ext.Panel', {
bodyStyle: 'background: #ffff00;',
border: true,
height: 200,
width: 200,
hidden: true
});
Ext.create('Ext.Container', {
renderTo: Ext.getBody(),
items: [{
xtype: 'button',
text: 'Show/Hide Panel',
handler: function () {
if (windowPanel.isHidden()) {
windowPanel.show();
} else {
windowPanel.hide();
}
}
},
windowPanel
]
});
Комментарии:
1. Спасибо, но я надеялся на решение на основе координат щелчка, чтобы панель отображалась под кнопкой заголовка.
2. Вы можете использовать
x:150
иy:250
свойстваwindowPanel
объекта. Или лучше, вы можете создать образец скрипки, чтобы прояснить это.3. Событие щелчка имеет параметр события. docs.sencha.com/extjs/6.5.3/classic /. … В этом событии вы можете вызвать getXY. docs.sencha.com/extjs/6.5.3/classic /. … Вы можете использовать showAt вместо show .