Ticari bir web sitesi için üretim öncesi testi ile bulunan Layke'nin çözümü (aksi halde işe yarayacak) ile ilgili bir sorun var.
Durum 1:
- & bir ağaç doldurmak oluşturun.
- Seçmek için bir düğüme tıklayın.
- Layke'ın çözümünde olduğu gibi yenileme işlemini tamamlayın.
- Düğüme tıklayın, "this.labelNode undefined" hatasını alın.
- & bir ağaç doldurmak oluşturun:
Şimdi durum 2, tekrar başlayın.
- Seçmek için bir düğüme tıklayın.
- Önceden seçilmiş olan düğüme Ctrl-tıklayın.
- Layke'ın çözümünde olduğu gibi yenileme işlemini tamamlayın.
- Düğüme tıklayın, hata yok. Birinci seçime
depolanan seçimi referansları ikinci seçim yapıldığında seçim özelliklerini (arka plan rengi gibi) geri almak için kullanılmaktadır. Maalesef, atıfta bulunulan nesneler artık bit kepçede. Değiştirilmiş kod , üretime hazır gibi görünmektedir, yani herhangi bir üretim öncesi testi başarısız olmuştur.
çözeltisi koymaktır:
Tree.dndController.selectNone();
önce yukarıdaki Layke en refreshTree çözeltisi ilk satırına. Bu fonksiyon için
refreshTree : function() {
// Destruct the references to any selected nodes so that
// the refreshed tree will not attempt to unselect destructed nodes
// when a new selection is made.
// These references are contained in Tree.selectedItem,
// Tree.selectedItems, Tree.selectedNode, and Tree.selectedNodes.
Tree.dndController.selectNone();
Tree.model.store.clearOnClose = true;
Tree.model.store.close();
// Completely delete every node from the dijit.Tree
Tree._itemNodesMap = {};
Tree.rootNode.state = "UNCHECKED";
Tree.model.root.children = null;
// Destroy the widget
Tree.rootNode.destroyRecursive();
// Recreate the model, (with the model again)
Tree.model.constructor(dijit.byId("myTree").model)
// Rebuild the tree
Tree.postMixInProperties();
Tree._load();
}
Cevabınız Laykes için teşekkürler. Senaryonuz gerçekten ağaç görüntülemeyi yeniliyor. Ancak, bu örnekle, üzerine yeni veriler yükleyemedim. Oluşturduğunuz işlevi çağıran periyodik bir yenileme gerçekleştirdim. Benim mağaza JSON verilerini içeren dosya ayarlı url özelliğine sahiptir. Dosyadaki verileri değiştiriyorum, ancak ağaç her zaman başlangıç verilerini veriyor. Yeni verileri nasıl yükleyeceğinizi biliyor musunuz? – Zion
Üzgünüm TheLostGuy, mağazanızın yenilenerek yenilendiğini varsaydım. Bunu ekle: dijit.byId ("myTree"). Model.store.clearOnClose = true; – Layke
Çok teşekkürler Laykes. Bu gerçekten benim için çalışıyor. Şerefe! – Zion