2013-04-08 17 views
0

我在使用DOJO時遇到問題,我將動態加載一個帶有內容的div,然後運行parser.parse(dom.byId(「mainDiv」));與各自的要求。而且這是第一次美妙的作品。但是,第二次我遇到了一個問題,它只是顯示不再激活或設置內容。DOJO和DIJIT無法解析相同的ID兩次?

第二次運行我所做的是刪除div中的所有html,然後用基本未解析的文本替換html,然後再解析它。現在我猜測它必須對dijit.registry做些什麼,但是我無法確切地發現問題所在,因爲我已經嘗試清除這個問題以至於無濟於事。您的幫助將不勝感激。

回答

3

Dojo通過指定的ID跟蹤它創建的對象/小部件。如果您再次在具有相同ID的對象上運行解析器,dojo會嘗試創建第二個實例,但已經有一個實例,所以它應該在您的js控制檯中引發錯誤(請檢查)。

你可以把id留空,然後dojo/parse應該爲你創建一個id。 Dojo允許您通過類屬性查找dom元素,這樣您就可以將div元素傳遞給parse()函數,而不必爲其指定明確的id。

Anotherway會摧毀創建控件/對象再次進行解析之前,DIV元素,看看這裏爲:

Dojo and unregistering widgets

報價從http://livedocs.dojotoolkit.org/dojo/parser#parse

「如果您嘗試解析相同的內容兩次,或解析提及現有小部件的ID的內容,它將導致例外 重複的ID爲「

+0

正確的,但我明白,但我想知道如何做「Anotherway會摧毀創建的小工具/對象」 – Tony 2013-04-08 21:53:31

+0

我添加了一個鏈接到我的原始答案 – 2013-04-08 21:59:52

+0

非常感謝你這是非常有益的。我在尋找哈哈時注意到了這個詞。 – Tony 2013-04-08 22:04:15