[
https://issues.apache.org/jira/browse/FLEX-25767?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Justin Mclean updated FLEX-25767:
---------------------------------
Labels: easyfix easytest (was: )
> executeBindings recursion doesn't effect ELEMENTS, only effects CHILDREN
> ------------------------------------------------------------------------
>
> Key: FLEX-25767
> URL: https://issues.apache.org/jira/browse/FLEX-25767
> Project: Apache Flex
> Issue Type: Bug
> Components: Spark: Application
> Affects Versions: Adobe Flex SDK 4.0 (Release)
> Environment: Affected OS(s): All OS Platforms
> Affected OS(s): All OS Platforms
> Language Found: English
> Reporter: Adobe JIRA
> Labels: easyfix, easytest
>
> Steps to reproduce:
> <?xml version="1.0" encoding="utf-8"?>
> <s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
> xmlns:s="library://ns.adobe.com/flex/spark"
> xmlns:mx="library://ns.adobe.com/flex/mx"
> xmlns:ui="ui.*"
> xmlns:components="lib.components.*" >
> <fx:Declarations>
> <fx:XML id="testData" xmlns="">
> <nodes>
> <node text="stuff" />
> </nodes>
> </fx:XML>
> </fx:Declarations>
> <s:layout>
> <s:VerticalLayout id="myLayout" />
> </s:layout>
> <fx:Script>
> <![CDATA[
> import mx.core.UIComponent;
>
>
> [Bindable]
> public function set data(content:String):void {
> this.testData = new XML(content);
> this.executeBindings(true);
>
> }
>
> public function get data():String {
> return this.testData.toXMLString();
> }
>
> [Bindable]
> public function set selected(val:Boolean):void {
> this.testData.node.@sel = val ? '1' : '0';
> this.b.executeBindings(true);
> }
>
> public function get selected():Boolean {
> return (this.testData.node['@sel'] == '1');
> }
>
> [Bindable]
> public function set text(newText:String):void {
> this.testData.node.@text = newText;
> this.b.executeBindings(true);
> }
>
> public function get text():String {
> return testData.node.@text;
> }
>
>
> ]]
> >
> </fx:Script>
> <s:TextInput id="a" text="@{text}" width="100%" />
> <s:CheckBox id="c" selected="@{selected}"
> visible="{testData.node.hasOwnProperty('@sel')}" />
> <s:TextArea id="b" text="@{data}" width="100%" />
>
>
> </s:Application>
> Actual Results:
> changing the value of text area a or checkbox c causes setters text or
> selected respectively to be called. These target text area b with execute
> bindings which works.
> However, setter 'selected' when called, using this.executeBindings doesn't
> have the effect of updating a and b like it should.
>
> Expected Results:
> changing the contents of the xml displayed in TextArea b should, when
> executeBindings is called in the 'selected' setter update a and b', when
> working properly adding a sel='1' to the node element within the text field
> should make a checkbox visible and selected.
> Workaround (if any):
> After an experiment where I output this.numChildren and it displayed 1
> (rather than 3). I realized there was also numElements. Outputting
> numElements I got the 3 I expected. So the following for loop does what I
> expected executeBindings(true) to do:
> Rather than this.executeBindings(true) I replace it with the following in
> public function set data:
> for( var i:int = 0; i< this.numElements; i++ ) {
> UIComponent(this.getElementAt(i)).executeBindings(true);
> }
> // Note: I'm using getElementAt
> I believe the solution here is to update the core functionality of
> executeBindings so that it executes on child elements and not whatever
> numChildren is referring to, or maybe loop through both elements and
> children.
> I'm marking it as a regression as there are reports from 2009 of
> executeBindings not working that were marked as resolved. However it is still
> an issue.
>
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira