Я знаю, что это похоже на общую ошибку, и я попытался реализовать некоторые jquery или Dojo-код, чтобы исправить эту проблему, но ничего не помогло до сих пор - я продолжаю получать ту же ошибку: виджет уже зарегистрирован с удостоверением ...dojo: виджет уже зарегистрировал ошибку
Вот мой код:
$("div").remove("#div_temperature_legend"); //jquery
dojo.create("div", { id: "div_temperature_legend", innerHTML: "<p></p>" }, "legendPanel");
var legend = new esri.dijit.Legend({
map: map,
layerInfos: [{ layer: layer, title: "Temperature" }],
}, "div_temperature_legend");
legend.startup();
приведенный выше код в функции щелчка кнопки и эта функция сама является частью большого додзё require()
функции; и работает в первый раз. Линия jQuery кажется удаленной, потому что легенды не дублируются во вновь создаваемом слое div_temperature_legend
.
Во всяком случае, я пробовал функцию dojo, но я все равно получаю ту же ошибку. Я думаю, что-то, где-то мне нужно до register
этот div, а затем уничтожить его. Но как? где? В контексте моего кода?
В идеале код должен обнаруживать виджет, если он существует, и не создает другую легенду.
Спасибо.
Код jquery удаляет 'div', но ссылка на виджет (т.е. esri.dijit.Legent по-прежнему доступна в реестре). Чтобы уничтожить виджет, который удаляет ссылку в реестре, вам нужно сделать что-то вроде это. 'legend.destroy()' перед созданием 'new esri.dijit.Legend'. – frank