بعد العمل على عقدة الشجرة ، غالبًا ما تحتاج إلى إجراء عملية إعادة تحميل لتحديث الشجرة ، ولكن تحتاج العديد من الشركات إلى تحديد آخر عقدة محددة افتراضيًا بعد تحديث الشجرة. وبهذه الطريقة ، يجب أولاً حفظ معلومات العقدة المحددة في المرة السابقة ، ثم قم بتوسيعها طبقة حسب الطبقة من خلال معلومات العقدة بعد إعادة التحميل.
بعد البحث لفترة طويلة ، وجدت أخيرًا حلًا ممكنًا ، وهو تسجيل معلومات موقع العقدة من خلال مسار العقدة ، ثم قم بتوسيع الطبقة حسب الطبقة من عقدة الجذر عبر المسار حتى العقدة الأخيرة.
الرمز النهائي كما يلي:
أولاً ، الطريقة في إصدار extjs3.x:
نسخة الكود كما يلي:
// احصل على عقدة محددة
var node = tree.getSelectionModel (). getSelectedNode () ؛
إذا لم يتم تحديد (Node == NULL) {// لم يتم تحديد شجرة التحميل الزائد
tree.getRootNode (). releoad () ؛
} آخر {// إعادة تحميل الشجرة وحدد آخر عقدة محددة بشكل افتراضي
var path = node.getPath ('id') ؛
tree.getloader (). load (tree.getRootnode () ،
وظيفة (treenode) {
tree.expandpath (path ، 'id' ، function (bsucess ، olastnode) {
tree.getSelectionModel (). Select (olastnode) ؛
}) ؛
}، هذا)؛
}
الفرق بين ExtJS3.0 و ExtJS4.2 كما يلي
نسخة الكود كما يلي:
IdPath = selnode.getPath ("id") ؛
tree.getStore (). تحميل ({
العقدة: tree.getrootnode () ،
رد الاتصال: Function () {
tree.expandpath (idpath ، 'id') ؛
}
}) ؛
تجدر الإشارة إلى أنه عندما يتم إرجاع بيانات JSON للشجرة في الخلفية ، يجب أن تحتوي العقدة على سمة المعرف. اتضح أن هذا لا يمكن أن يحقق التأثير ، وأخيراً ، تمت إضافة سمة المعرف إلى JSON.