Я разработал собственный шаблонный виджет с диадемом. Я должен сделать некоторые манипуляции DOM с детьми containerNode
. Все работает отлично, за исключением случаев, когда у меня есть два загруженных виджета, а манипуляции с дочерними элементами containerNode
, похоже, влияют на все виджеты того же типа, а не только на конкретный экземпляр виджета.Манипулирование DOM нескольких экземпляров виджета диджита
Я думаю, что я сузили его до этой части моего кода, где я «разгрузить» «дети» Я уверен, выполнение следующей функции:
popPage: function() {
if (this._pagesLoaded) {
var i = this._pagesLoaded - 1;
var y = this.containerNode.children[i];
if (typeof y !== "undefined") {
this.containerNode.removeChild(y);
}
var page = this.pages.pop();
page.unsetPage(); //Internal sub object cleanup
page.destroyRecursive();
this.endPageLoaded--;
this._calcPagesLoaded(); //recalcs this._pagesLoaded
}
},
Когда я, кажется, чтобы выполнить это, кажется, что ребенок удаляется из DOM всех виджетов. Это просто не имеет никакого смысла, и ручная проверка вещей в Firebug (например, dijit.byId("logScroller62").containerNode.children
) показывает, что браузер считает, что все отдельно, и я получаю два разных набора результатов для двух разных экземпляров.
Да, я понимаю это, но, по-видимому, я выполняю приведенный выше код, чтобы удалить дочерние узлы DOM из экземпляра Widget A, но он удаляет один и тот же индекс дочернего узла из всех экземпляров Widget (например, B, C и т. Д.). – Kitson
ОК, не вижу ваш код, но я предполагаю, что this.containerNode.children - это массив, который получает общий доступ к нескольким экземплярам, потому что вы объявили его в прототипе чего-то. –
Да, это тоже моя догадка ... Я собираюсь вернуться к коду, но я прямо не объявляю его, поскольку 'containerNode' устанавливается автоматически с помощью шаблона' dijit._Templated' HTML. Возможно, я как-то это испортил, но я так не думаю. – Kitson