You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
But qxWeb don't have a dispose method.
I think qxWeb should have a method for disposing an instance removing html from DOM, listeners attached and everything related to element and childrens.
I am copying a simple dispose method used in my code but this functionality should be in qx core.
qxWeb.$attach({
dispose : function ()
{
this.removeAllListeners();
this.forEach(qx.dom.Element.remove);
},
removeAllListeners : function ()
{
for (var _index = 0, _length = this.length; _index < _length; ++_index) {
var _element = this[_index];
var _qxElement = qxWeb(_element);
for (var _i in _element) {
if (_element.hasOwnProperty(_i)) {
try {
if (_element[_i].classname == 'qx.event.Emitter') {
var _emitter = _element[_i];
var _listeners = _emitter.getListeners();
for (var _event in _listeners) {
if (_listeners.hasOwnProperty(_event)) {
var _eventListeners = _listeners[_event];
for (var _j = 0, _l = _eventListeners.length; _j < _l; ++_j) {
_qxElement.off(
_event,
_eventListeners[_j].listener,
_eventListeners[_j].ctx
);
}
}
}
}
} catch (e) {
}
}
}
}
}
});
Remarks:
If qx.module.Event has a getEmitter method, the first for loop should be unnecesary.
If qx.event.Emitter had a dispose method, the second loop should be unnecesary.
I think a method for removing all listeners in elements should be in qxWeb core.
The text was updated successfully, but these errors were encountered:
Joaquín Fernández (jf) wrote:
I have some qx classes using qxWeb elements but i would like to dispose them using a framework method.
For example, in constructor:
construct : function() {
.
.
.
this.__html = qxWeb.create('<span>')
.
.
.
this.__html.on ('click', ........)
.
.
.
}
I would like to do in destructor:
destruct : function() {
.
.
.
this._disposeObjects('__html')
.
.
.
}
But qxWeb don't have a dispose method.
I think qxWeb should have a method for disposing an instance removing html from DOM, listeners attached and everything related to element and childrens.
I am copying a simple dispose method used in my code but this functionality should be in qx core.
qxWeb.$attach({
dispose : function ()
{
this.removeAllListeners();
this.forEach(qx.dom.Element.remove);
},
removeAllListeners : function ()
{
for (var _index = 0, _length = this.length; _index < _length; ++_index) {
var _element = this[_index];
var _qxElement = qxWeb(_element);
for (var _i in _element) {
if (_element.hasOwnProperty(_i)) {
try {
if (_element[_i].classname == 'qx.event.Emitter') {
var _emitter = _element[_i];
var _listeners = _emitter.getListeners();
for (var _event in _listeners) {
if (_listeners.hasOwnProperty(_event)) {
var _eventListeners = _listeners[_event];
for (var _j = 0, _l = _eventListeners.length; _j < _l; ++_j) {
_qxElement.off(
_event,
_eventListeners[_j].listener,
_eventListeners[_j].ctx
);
}
}
}
}
} catch (e) {
}
}
}
}
}
});
Remarks:
The text was updated successfully, but these errors were encountered: