You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@flex.apache.org by ah...@apache.org on 2014/10/29 19:16:00 UTC
[05/23] git commit: [flex-asjs] [refs/heads/develop] - handle source
changes
handle source changes
Project: http://git-wip-us.apache.org/repos/asf/flex-asjs/repo
Commit: http://git-wip-us.apache.org/repos/asf/flex-asjs/commit/1a83e200
Tree: http://git-wip-us.apache.org/repos/asf/flex-asjs/tree/1a83e200
Diff: http://git-wip-us.apache.org/repos/asf/flex-asjs/diff/1a83e200
Branch: refs/heads/develop
Commit: 1a83e200b33d172818bc0c3eb52da1b52ec2adf9
Parents: 17505db
Author: Alex Harui <ah...@apache.org>
Authored: Tue Oct 28 09:43:33 2014 -0700
Committer: Alex Harui <ah...@apache.org>
Committed: Wed Oct 29 11:15:42 2014 -0700
----------------------------------------------------------------------
.../org/apache/flex/binding/SimpleBinding.as | 25 ++++++++++++++++++++
1 file changed, 25 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/1a83e200/frameworks/as/projects/FlexJSUI/src/org/apache/flex/binding/SimpleBinding.as
----------------------------------------------------------------------
diff --git a/frameworks/as/projects/FlexJSUI/src/org/apache/flex/binding/SimpleBinding.as b/frameworks/as/projects/FlexJSUI/src/org/apache/flex/binding/SimpleBinding.as
index 6b169f2..7bd82b7 100644
--- a/frameworks/as/projects/FlexJSUI/src/org/apache/flex/binding/SimpleBinding.as
+++ b/frameworks/as/projects/FlexJSUI/src/org/apache/flex/binding/SimpleBinding.as
@@ -24,6 +24,7 @@ package org.apache.flex.binding
import org.apache.flex.core.IBead;
import org.apache.flex.core.IStrand;
import org.apache.flex.core.IDocument;
+ import org.apache.flex.events.ValueChangeEvent;
/**
* The SimpleBinding class is lightweight data-binding class that
@@ -144,7 +145,15 @@ package org.apache.flex.binding
if (destination == null)
destination = value;
if (sourceID != null)
+ {
source = document[sourceID] as IEventDispatcher;
+ if (source == null)
+ {
+ document.addEventListener("valueChange",
+ sourceChangeHandler);
+ return;
+ }
+ }
else
source = document as IEventDispatcher;
source.addEventListener(eventName, changeHandler);
@@ -168,5 +177,21 @@ package org.apache.flex.binding
{
destination[destinationPropertyName] = source[sourcePropertyName];
}
+
+ private function sourceChangeHandler(event:ValueChangeEvent):void
+ {
+ if (event.propertyName != sourceID)
+ return;
+
+ if (source)
+ source.removeEventListener(eventName, changeHandler);
+
+ source = document[sourceID] as IEventDispatcher;
+ if (source)
+ {
+ source.addEventListener(eventName, changeHandler);
+ destination[destinationPropertyName] = source[sourcePropertyName];
+ }
+ }
}
}
\ No newline at end of file