Metadata
- Source
- FLUID-4625
- Type
- Bug
- Priority
- Major
- Status
- Closed
- Resolution
- Fixed
- Assignee
- Antranig Basman
- Reporter
- Antranig Basman
- Created
2012-02-28T17:20:53.269-0500 - Updated
2014-03-03T13:00:08.834-0500 - Versions
- N/A
- Fixed Versions
- N/A
- Component
-
- Framework
Description
In DataBinding.js, line 381 this implementation appears to be have been installed quite deliberately
if (!spec || path === "") {
break;
}
if (!path) {
return null;
}
for reasons which are no longer clear. This fails to notify listeners of changes applied at higher paths - for example, a change at path "selections" does not hit a listener at path "selections.lineSpacing". To be completely accurate, the applier might iterate through subobjects in order to determine the exact set of changes to avoid unnecessarily notifying listeners - but all the same, the current behaviour has to be considered definitely incorrect since there are clearly cases where listeners are not notified when changes occur. This is currently causing problems in the UIOptions-videoPlayer media panel integration work.
Comments
-
Antranig Basman commented
2012-02-29T00:18:19.126-0500 The supplied fix quickly changes the logic just in matchPath, but the tests we write are against the functional behaviour of model listeners.
In practice we may want a better implementation which explodes composite changes into
smaller increments so that we can avoid unnecessary notifications, but this at least covers the case
of missed notificationsNote that this logic originally came from
https://github.com/rsf/PonderUtilCore/blob/master/src/uk/org/ponder/beanutil/support/ListBeanPredicateModel.java
in this version, the treatment of "spec" and "path" is completely asymmetric, which is at least consistent. It's hard to recall what motivated the current framework "partially asymmetric" version which treats changes at the root differently to those at other places. -
Michelle D'Souza commented
2012-03-21T15:38:24.560-0400 Merged into project repo at 1ff854d2bf0a8d71fbb33c9bfb9e70e8dec1c1d6