Я плохо знаком с Инструментарием Dojo. Я получаю ошибку
Tried to register widget with id=myButton but that id is already registered
каждый раз, когда я пытаюсь загрузить содержание додзе дважды (значение, что я загружаю содержимое HTML через jQuery. Загрузка в контейнерное отделение). Существует ли способ уже не зарегистрировать зарегистрированные виджеты в додзе? Я видел некоторые примеры, но я действительно не получаю их работа.
Моя кнопка:
<button dojoType="dijit.form.Button" id="myButton">button</button>
Если вы хотите отменить регистрацию определенных виджетов, вы можете использовать их destroy ()
или destroyRecursive ()
методы. Второй уничтожает все виджеты внутри того, который вы уничтожаете (т.е. вызов destroyRecursive в виджете формы также уничтожит все компоненты формы).
В вашем случае, похоже, лучше всего сделать это до jQuery.load
-
var widgets = dijit.findWidgets(<containerDiv>);
dojo.forEach(widgets, function(w) {
w.destroyRecursive(true);
});
Приведенный выше код отменяет регистрацию всех виджетов в
, и сохраняют связанные с ними узлы DOM. Чтобы уничтожить узлы DOM, вместо этого передайте false
в destroyRecursive
.
Ссылка:
http://dojotoolkit.org/api/1.3/dijit/_Widget/destroyRecursive
На основе http://bugs.dojotoolkit.org/ticket/5438 , я нашел достаточный способ уничтожения виджетов додзё:
dijit.registry.forEach(function(w){
w.destroy();
});