revert bindAll and create bindAllWithOrigin

This commit is contained in:
aartzrc
2018-05-10 08:40:50 -07:00
parent f3f87179a6
commit 65124993f7
5 changed files with 51 additions and 1 deletions
+34 -1
View File
@@ -38,7 +38,40 @@ class SignalTools {
* @param force = true - force instantiate all lazy signals
* @return Void -> Void
*/
static public function bindAll(bindable:bindx.IBindable, callback: bindx.IBindable -> String -> Dynamic -> Dynamic -> Void, force = true):Void -> Void {
static public function bindAll(bindable:bindx.IBindable, callback: String -> Dynamic -> Dynamic -> Void, force = true):Void -> Void {
var listeners = new Map<bindx.BindSignal.Signal<Function>, Function>();
var signals = getSignals(bindable, force);
for (name in signals.keys()) {
var signal = signals.get(name);
if (signal == null) continue;
if (std.Std.is(signal, bindx.BindSignal.FieldSignal)) {
var listener = function (from:Dynamic, to:Dynamic) callback(name, from, to);
listeners.set(signal, listener);
signal.add(listener);
} else {
var listener = function () callback(name, null, null);
listeners.set(signal, listener);
signal.add(listener);
}
}
return function () {
for (signal in listeners.keys()) {
var listener = listeners.get(signal);
signal.remove(listener);
}
}
}
/**
* Bind all bindable fields/methods (use reflection api), include IBindable source object in callback
* @param bindable - target object
* @param callback -
* @param force = true - force instantiate all lazy signals
* @return Void -> Void
*/
static public function bindAllWithOrigin (bindable:bindx.IBindable, callback: bindx.IBindable -> String -> Dynamic -> Dynamic -> Void, force = true):Void -> Void {
var listeners = new Map<bindx.BindSignal.Signal<Function>, Function>();
var signals = getSignals(bindable, force);