0

我有一个向 div“dettaglio_utenti”添加按钮的功能。使用此指令调用函数后

tab+="<button data-dojo-type='dojox.mobile.Button' id='apri_mappa' onClick=\" location.href='tel:"+telefono+"'\">apri mappa</button>"

var vText = document.getElementById("dettaglio_utente");
    vText.innerHTML = tab;

require(["dojo/parser"], function(parser){
    parser.parse(vText);
});

它仅在我第一次显示页面时起作用。第二次未解析按钮,我在浏览器控制台中看到此错误:dojo/parser::parse() error Error: Tried to register widget with id==apri_mappa but that id is already registered

4

1 回答 1

1

第二次显示页面时,第一页必须仍然是 dom 的一部分。(也许这是一个工作灯功能,单页应用程序?)。因此,当 dojo 解析第二页时,它会给出错误,因为已经创建了具有该 id 的按钮。

我不相信阻止第二次解析按钮会完成你所需要的。我认为你的选择是:

  1. 从第一页销毁小部件。
  2. 如果您不需要按钮上的 id,您可以省略它,Dojo 将创建一个不会发生冲突的 id。
  3. 如果您需要 id,您可以或在发出按钮的 id 时使用计数器。
    id='apri_mappa_' + i我是柜台。

只知道你上面写的,我认为优先顺序是2,1,3。


编辑 - 如何销毁小部件

require(['dijit/registry'], function(registry) {
    registry.byId('apri_mappa').destroy();
});
于 2013-06-21T11:11:36.830 回答