我目前正在开发我的个人网站
和我的网站的一部分我有一个偏见的观点,以避免重复代码...
这个视图我有一个dojox.grid.datagrid ...
我可以在同一页面中两次调用此视图(ruban.phtml)
问题是我点击了1个按钮,这是该视图的吸引力(局部视图),然后我点击第二个按钮,这是该视图的吸引力我有一个错误:
错误:尝试使用id == grid注册小部件,但该ID已经注册
并且为了解决这个问题,我删除了jsId遍历网格,并且我在调用视图时声明了一个全局变量被初始化:
grid = dijit.getEnclosingWidget(dojo.byId("gridId1");
// soit
grid = dijit.getEnclosingWidget(dojo.byId("gridId2");
我试过,但我总是遇到同样的问题:
......
onDownloadEnd:function() {
// Update the id of the grid
var nodeGrid = dojo.byId("ancienIdGrid");
nodeGrid.setAttribute("id", "newIdGrid");
varGlobalPourId = dijit.getEnclosingWidget(nodeGrid);
// Update the id of the grid
var nodeGrid = dojo.byId("ancienIdGrid");
nodeGrid.setAttribute("id", "newIdGrid");
varGlobalPourId = dijit.getEnclosingWidget(nodeGrid);
谢谢你的帮助
答案 0 :(得分:5)
Dijit在dijit.registry中维护一个id字符串到小部件的哈希值(参见dijit / _base / manager.js)更新DOM中的id不会影响该表,所以我可以看到如果你尝试创建具有相同ID两次的窗口小部件。如果你需要一个id,那么如何为每个网格生成一个唯一的id?
答案 1 :(得分:4)
destroy all registered id forcefully with this snippet than you go on your way!!
var ids = ["cp1","cp2","cp3"];
dijit.registry.forEach(function(w){
if(dojo.indexOf(ids,id)){
w.destroyRecursive();
}
});