dojo解决这个问题Tried to register widget with id==quot;myidquot; but that id is already registered
在dojo中,除了沿用Dom結點, dojo 還自定義了一類結點用“dojoType" 進行標識。
dojo 稱這些結點為widget。 當檢測到HTMl文檔中某個標簽定義了dojoType 屬性之后,dojo會調用dojo包中相應的 js 及 css 文件對這個結點進行渲染。 從而這個結點元素就會相應地顯示出具有dojo特色的樣式及功能。
如此說來, dom.byId 跟 dojo.byId 獲取到的就是普通的HTMl文檔結構樹中的某個結點元素,以下簡稱dom結點,。
而 registry.byId 獲取到的是一個dojo的widget,以下簡稱widget結點。
它們的區別之一是 innerHTML, tagName 等方法只對用 dom結點生效。
?
這樣在程序中有時候注冊ID的時候,我們注冊的widget,在第二次重復使用的時候,會出現如下錯誤:
Tried to register widget with id=="myid" but that id is already registered
?
遇到這個問題,主要提供如下三種解決辦法:
1.刷新頁面,從頭再來。(這個可以解決)
2.新打開一個頁面。(沒試過)
3.既然提示id is already registered,已經被注冊了,那我們就先把注冊的destory,然后再創建一個相同ID的容器,這種解決辦法最常用。
?
使用:
registry.byId("myTableNode").destroy(); $("#bot").append("<div id='myTableNode'></div>"); //bot是上一個節點id,append意思是添加在之后,當然按你的需求來,before,after都可以,這是jquery的東西。這段代碼添加在調用代碼之前,解決問題。寫的安全一點,應該這樣: if(registry.byId("myTableNode")){ registry.byId("myTableNode").destroy(); $("#bot").append("<div id='myTableNode'></div>"); //bot是上一個節點id,append意思是添加在之后,當然按你的需求來,before,after都可以,這是jquery的東西。 }總結
以上是生活随笔為你收集整理的dojo解决这个问题Tried to register widget with id==quot;myidquot; but that id is already registered的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 简单易用的baidutemplate模板
- 下一篇: ElasticSearch简介与安装