Details
-
Type:
Bug
-
Status: Closed
-
Priority:
Major
-
Resolution: Fixed
-
Affects Version/s: 4.0
-
Fix Version/s: 4.1
-
Component/s: ACE-Components
-
Labels:None
-
Environment:Any
-
Assignee Priority:P1
-
ICEsoft Forum Reference:
Description
The reason why this happens is that when the table is recreated it calls its destroy() method to clear the table of event listeners. The problem is that the call to remove the event listener for these keys in the paginator references the event handler of the current (new) instance and not the handler of the previous instance, so nothing gets removed and all these listeners fire at the same time.
So, the onElementUpdate() call has to be fixed or the previous instance has to be passed to the destroy method or a static event handler should be used instead, if possible.
Activity
- All
- Comments
- History
- Activity
- Remote Attachments
- Subversion
r45983: added mechanism to retrieve the previous table instance object and call destroy() on it before recreating the new table instance.
This issue started after introducing client IDs to the table body and table setup script. Because of this, the onElementUpdate() element doesn't fire when only the body and/or the setup script are updated (as opposed to the entire table). As a result, the destroy() method doesn't get called in the previous instance, and many event listeners accumulate. Since adding additional onElementUpdate calls for these specific nodes didn't work, the fix consists in saving a reference to the current table instance in a global variable, and then accessing this instance when the same table is about to be recreated, invoking the destroy() method of the previous instance to remove all the previous event listeners and avoid accumulating them.
Verified with ICEfaces4 trunk r46143 / IE11, FF34, Chrome46.