Обновите содержимое одного окна на событии в другом окне с EXTJS
-
30-09-2019 - |
Вопрос
Некоторое время назад я начал изучать библиотеку Extjs, и теперь я хотел бы создать следующее:
Есть окно браузера, и он разделен вертикалью.
Слева находится Treepanel с каталогами и подкаталазами (только 2 уровня).
С правой стороны будет выход для содержания выбранного подкаталога.
Я сделал часть интерфейса, но я не знаю, как менять контент на правой стороне, когда пользователь нажимает на подкаталог на левой стороне. Я могу сделать запрос с Ext.ajax.request, но я не знаю, как вызвать обновление контента для правой стороны.
Кстати. Когда я мантионнул левую сторону, это Treepanel, а правая сторона - Grippanel, и они находятся в ViewPort с XType: «Панель», но я не думаю, что это мнение для этого вопроса.
Какие-либо предложения?
Решение
Во-первых, вам нужно зарегистрировать тот факт, что пользователь выбирает узел в Treepanel, это можно сделать через:
yourtreepanel.getSelectionModel().on('selectionchange', whattodonext);
Где «YourTreepanel» - это имя вашего TRepanel (если Treepanel был назначен переменной, в противном случае используйте ext.getcmp ('yourtreepanel'). Getslecti ....) и 'whattoDonext' - это имя функции, чтобы позвонить, когда Пользователь выбирает узел.
Функция «WhattoDonext» тогда выглядит так:
function whattodonext(){
node=yourtreepanel.selModel.selNode;
if(node){
if(node.isLeaf()){
// this works out what you want to do if the user has selected a valid leaf node
}else{
// otherwise...put anything you wish to happen here (i.e. if a folder has been selected)
}
}
}
Следующая часть - обновить панель справа с контентом (если его называли «MyContentPanel»). Сказать, что этот контент должен быть загружен из «MyContent.html» в разделе с
// this works out what you want to do if the user has selected a valid leaf node
Вы бы поставили код:
mycontentpanel.load({
url: 'mycontent.html',
params: {
yourparam1:'param1value',
yourparam2:'param2value'
},
nocache: true,
timeout: 30
});
Вот и все!
Вы можете использовать параметры параметров для отправки любых конкретных параметров сообщения, которые вы можете иметь, который будет решать, какой контент подается.
И не забывайте, если вы запускаете трудности, попробуйте ссылаться на ваши объекты, используя Ext.GetCMP («ObjectName») вместо просто «ObjectName».
Удачи!