I can see some validity to that argument. On the other hand, since Pivot has 
another means of data binding that is better suited to the use case you 
describe, I think it makes sense to leave the namespace binding feature as-is 
and see how it ends up being used. What you describe could easily be added in a 
future update.

On Jul 19, 2010, at 9:26 AM, Michael Allman wrote:

> On Mon, 19 Jul 2010, Greg Brown wrote:
> 
>>>>> What about properties of properties of objects---like 
>>>>> ${obj.prop.subprop}?  If the "obj.prop" value changes, do the binding 
>>>>> listeners get notified?
>>>> 
>>>> No, because those listeners have indicated that the property they care 
>>>> about is "subprop". They don't necessarily know or care that "prop" is 
>>>> referred to by another object ("obj", in this case).
>>> 
>>> I can't think of a case off the top of my head where you would actually run 
>>> into this situation in the current implementation.  If you can, it would 
>>> help illustrate the problem.
>> 
>> I think the current implementation is valid. But just for comparison, it 
>> would be useful to know what Flex does in this case.
> 
> You have the flex-ibility (sorry, couldn't help myself) to define a "site" 
> and a "chain" when creating bindings in code.  The "site" is the root of the 
> bound hierarchy.  The "chain" is the sequence of properties for each of which 
> a listener is registered.  If any property in the chain changes, the bound 
> listener will receive a notification if the last property in the chain does 
> in fact change.
> 
> But bindings are rarely done in code and are rarely thought out that 
> thoroughly.  By default, in a root-property sequence 
> "object.prop1.prop2.prop3..." any change in any of prop1, prop2, prop3, etc. 
> will notify a listener.  I think I can give a simple example of why this is 
> desirable.
> 
> Suppose a component binds one of its properties to the expression 
> "person.name.first".  If first changes from "John" to "Jane" the listener 
> will receive a notification of a change in "person.name.first" from "John" to 
> "Jane".  If name changes from {first: "John", last: "Doe"} to {first: "Jane", 
> last: "Doe"}, shouldn't the listener know the first name changed? Strictly 
> speaking, the original name's "first" property didn't change---it's still 
> "John".
> 
> Similarly, if person is reassigned from person1 to person2 and they have 
> different first names, etc.  If this person is a data model backing a form, 
> and the person is changed wholesale, any "first name" 
> labels/inputs/validators/parsers/what-have-you need to know.
> 
> Cheers,
> 
> Michael

Reply via email to