2010-05-31 42 views
5

dojo documentsdijit.registry,我看到forEach方法接受最後一個參數thisObject。但它不是那個對象的方式。它是一個dijit小部件還是一個dojo對象?獲取元素中的所有小部件

我想銷燬一個元素內的所有小部件(將被AJAX替代),以便它們可以在不衝突的情況下再次被解析。

dijit.registry.forEach(function(w) { 
    w.destroyRecursive(); 
}, dojo.byId("ajaxElement")); 

但這種破壞ALL小部件在頁面上...

+0

檢查此stackoverflow的問題,它已經在那裏回答:http://stackoverflow.com/questions/2763983/dojo-and-unregistering-widgets – mtchuente 2016-03-01 15:32:52

回答

3

thisObject是範圍對象調用傳遞進來的forEach第一個參數的函數。

一對夫婦的解決方案,你可以在這種情況下使用:

1)使用dijit.findWidgets找到所有的dijit有些DOM節點並摧毀他們一個接一個。 dijit.findWidgets返回將domnode作爲參數的小部件數組 2)dojo.parser.parse返回它創建的所有dijits數組,存儲該數組並在您再次撥打dijit.parser.parse之前銷燬該dijits。

3)使用dijit.registry.filter來過濾掉你想保留的dijits。