flex-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Devsena (JIRA)" <j...@apache.org>
Subject [jira] [Updated] (FLEX-35227) [FlexJS] Data Binding Fails When Following Multiple References
Date Mon, 09 Jan 2017 06:03:58 GMT

     [ https://issues.apache.org/jira/browse/FLEX-35227?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]

Devsena updated FLEX-35227:
---------------------------
    Description: 
Bracketed data binding to UI component do not works properly in FlexJS 0.8.0 nightly build
SDK (my tests were mainly concentrated to HTML output in browsers). 

*Works*
{code}
<js:Label id="lbl" text="{anyClass.fieldA}" width="300"/>
{code}

*Do not works*
{code}
<js:Label text="{anyClass.subClass.fieldB}" width="300"/>
{code}

Binding to UI component seems do not works when there are multiple reference, i.e. _class.field.field_.
Following are the snippets of the codes which I used in this test:

*InitialView MXML file*
{code}
[Bindable] private var anyClass:ClassA = new ClassA();
protected function onTextInputChangeA(event:Event):void
{
	anyClass.fieldA = myTI1.text;
}
			
protected function onTextInputChangeB(event:Event):void
{
	anyClass.subClass.fieldB = myTI2.text;
}
...
<js:VContainer width="500">
	...
	<js:TextInput id="myTI1" text="Change Value.." change="onTextInputChangeA(event)"/>
	<js:Label id="lbl" text="{anyClass.fieldA}" width="300"/>
</js:VContainer>
<js:VContainer width="500">
	...
	<js:TextInput id="myTI2" text="Change Value.." change="onTextInputChangeB(event)"/>
	<js:Label text="{anyClass.subClass.fieldB}" width="300"/>
</js:VContainer>
{code}

*ClassA*
{code}
public class ClassA extends EventDispatcher
{
	[Bindable] public var fieldB:ClassB = new ClassB();
		
	public function ClassA() { }
	
	private var _fieldA:String = "";

	[Bindable("fieldAChanged")]
	public function get fieldA():String
	{
		return _fieldA;
	}
		
	public function set fieldA(value:String):void
	{
		if (value != _fieldA)
		{
			_fieldA = value;
			dispatchEvent(new Event("fieldAChanged"));
		}
	}
}
{code}

*ClassB*
{code}
[Bindable] public class ClassB extends EventDispatcher
{
	public function ClassB()
	{ }
		
	private var _fieldB:String;
		
	[Bindable(event="fieldBChanged")]
	public function get fieldB():String
	{
		return _fieldB;
	}
		
	public function set fieldB(value:String):void
	{
		if (value != _fieldB)
		{
			_fieldB= value;
			dispatchEvent(new Event("fieldBChanged"));
		}
	}
}
{code}

I've attached herewith the source to the test project. Please, take a look.

  was:
Bracketed data binding to UI component do not works properly in FlexJS 0.8.0 nightly build
SDK (my tests were mainly concentrated to HTML output in browsers). 

*Works*
{code}
<js:Label id="lbl" text="{anyClass.fieldA}" width="300"/>
{code}

*Do not works*
{code}
<js:Label text="{anyClass.fieldB.fieldC}" width="300"/>
{code}

Binding to UI component seems do not works when there are multiple reference, i.e. _class.field.field_.
Following are the snippets of the codes which I used in this test:

*InitialView MXML file*
{code}
[Bindable] private var anyClass:ClassA = new ClassA();
protected function onTextInputChangeA(event:org.apache.flex.events.Event):void
{
	anyClass.fieldA = myTI1.text;
}
			
protected function onTextInputChangeB(event:org.apache.flex.events.Event):void
{
	anyClass.fieldB.fieldC = myTI2.text;
}
...
<js:VContainer width="500">
	...
	<js:TextInput id="myTI1" text="Change Value.." change="onTextInputChangeA(event)"/>
	<js:Label id="lbl" text="{anyClass.fieldA}" width="300"/>
</js:VContainer>
<js:VContainer width="500">
	...
	<js:TextInput id="myTI2" text="Change Value.." change="onTextInputChangeB(event)"/>
	<js:Label text="{anyClass.fieldB.fieldC}" width="300"/>
</js:VContainer>
{code}

*ClassA*
{code}
public class ClassA extends EventDispatcher
{
	[Bindable] public var fieldB:ClassB = new ClassB("Change Value..");
		
	public function ClassA() { }
	
	private var _fieldA:String = "Change Value..";

	[Bindable("fieldAChanged")]
	public function get fieldA():String
	{
		return _fieldA;
	}
		
	public function set fieldA(value:String):void
	{
		if (value != _fieldA)
		{
			_fieldA = value;
			dispatchEvent(new Event("fieldAChanged"));
		}
	}
}
{code}

*ClassB*
{code}
[Bindable] public class ClassB extends EventDispatcher
{
	public function ClassB(fieldC:String)
	{
		this.fieldC = fieldC;
	}
		
	private var _fieldC:String;
		
	[Bindable(event="fieldCChanged")]
	public function get fieldC():String
	{
		return _fieldC;
	}
		
	public function set fieldC(value:String):void
	{
		if (value != _fieldC)
		{
			_fieldC = value;
			dispatchEvent(new Event("fieldCChanged"));
		}
	}
}
{code}

I've attached herewith the source to the test project. Please, take a look.


> [FlexJS] Data Binding Fails When Following Multiple References
> --------------------------------------------------------------
>
>                 Key: FLEX-35227
>                 URL: https://issues.apache.org/jira/browse/FLEX-35227
>             Project: Apache Flex
>          Issue Type: Bug
>    Affects Versions: Apache FlexJS 0.8.0
>            Reporter: Devsena
>         Attachments: POCSource.zip
>
>
> Bracketed data binding to UI component do not works properly in FlexJS 0.8.0 nightly
build SDK (my tests were mainly concentrated to HTML output in browsers). 
> *Works*
> {code}
> <js:Label id="lbl" text="{anyClass.fieldA}" width="300"/>
> {code}
> *Do not works*
> {code}
> <js:Label text="{anyClass.subClass.fieldB}" width="300"/>
> {code}
> Binding to UI component seems do not works when there are multiple reference, i.e. _class.field.field_.
Following are the snippets of the codes which I used in this test:
> *InitialView MXML file*
> {code}
> [Bindable] private var anyClass:ClassA = new ClassA();
> protected function onTextInputChangeA(event:Event):void
> {
> 	anyClass.fieldA = myTI1.text;
> }
> 			
> protected function onTextInputChangeB(event:Event):void
> {
> 	anyClass.subClass.fieldB = myTI2.text;
> }
> ...
> <js:VContainer width="500">
> 	...
> 	<js:TextInput id="myTI1" text="Change Value.." change="onTextInputChangeA(event)"/>
> 	<js:Label id="lbl" text="{anyClass.fieldA}" width="300"/>
> </js:VContainer>
> <js:VContainer width="500">
> 	...
> 	<js:TextInput id="myTI2" text="Change Value.." change="onTextInputChangeB(event)"/>
> 	<js:Label text="{anyClass.subClass.fieldB}" width="300"/>
> </js:VContainer>
> {code}
> *ClassA*
> {code}
> public class ClassA extends EventDispatcher
> {
> 	[Bindable] public var fieldB:ClassB = new ClassB();
> 		
> 	public function ClassA() { }
> 	
> 	private var _fieldA:String = "";
> 	[Bindable("fieldAChanged")]
> 	public function get fieldA():String
> 	{
> 		return _fieldA;
> 	}
> 		
> 	public function set fieldA(value:String):void
> 	{
> 		if (value != _fieldA)
> 		{
> 			_fieldA = value;
> 			dispatchEvent(new Event("fieldAChanged"));
> 		}
> 	}
> }
> {code}
> *ClassB*
> {code}
> [Bindable] public class ClassB extends EventDispatcher
> {
> 	public function ClassB()
> 	{ }
> 		
> 	private var _fieldB:String;
> 		
> 	[Bindable(event="fieldBChanged")]
> 	public function get fieldB():String
> 	{
> 		return _fieldB;
> 	}
> 		
> 	public function set fieldB(value:String):void
> 	{
> 		if (value != _fieldB)
> 		{
> 			_fieldB= value;
> 			dispatchEvent(new Event("fieldBChanged"));
> 		}
> 	}
> }
> {code}
> I've attached herewith the source to the test project. Please, take a look.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Mime
View raw message