تحديث محتوى نافذة واحدة على الحدث في نافذة أخرى مع extjs
-
30-09-2019 - |
سؤال
منذ بعض الوقت بدأت أتعلم مكتبة ExtJS والآن أود إنشاء المتابعة:
هناك نافذة متصفح وهي مفصولة عمودي.
على اليسار ، يوجد Treepanel مع الدلائل والمدافع الفرعي (فقط من المستوى العميق).
على الجانب الأيمن سيكون هناك إخراج لمحتوى الدليل الفرعي المحدد.
لقد قمت بجزء الواجهة ، لكنني لا أقوم بتغيير المحتوى على الجانب الأيمن عندما ينقر المستخدم على الدليل الفرعي على الجانب الأيسر. يمكنني تقديم الطلب باستخدام ext.ajax.request ، لكنني لا أعرف كيفية تشغيل تحديث المحتوى للجانب الأيمن.
على فكرة. بينما كنت أتعامل مع الجانب الأيسر هو Treepanel والجانب الأيمن هو Grippanel وهم في منفذ العرض مع Xtype: "لوحة" ، لكنني لا أعتقد أن هذا هو imoptant لهذا السؤال.
أي اقتراحات؟
المحلول
أولاً ، تحتاج إلى تسجيل حقيقة أن المستخدم يختار عقدة في Treepanel ، يمكن القيام بذلك عبر:
yourtreepanel.getSelectionModel().on('selectionchange', whattodonext);
حيث "yourtreepanel" هو اسم treepanel الخاص بك (إذا تم تعيين treepanel لمتغير ، وإلا استخدم ext.getcmp ('yourtreepanel'). يختار المستخدم عقدة.
ستبدو وظيفة "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
});
وهذا كل شيء!
يمكنك استخدام خيارات Params لإرسال أي معلمات منشور محددة قد تكون لديك والتي ستحدد المحتوى الذي يتم تقديمه.
ولا تنسى ، إذا ركضت إلى الصعوبات ، فحاول الرجوع إلى كائناتك باستخدام ext.getcmp ('ObjectName') بدلاً من مجرد اسم ".
حظا طيبا وفقك الله!