diff options
Diffstat (limited to 'js/dojo-1.7.2/dojox/mvc/Bind.js')
| -rw-r--r-- | js/dojo-1.7.2/dojox/mvc/Bind.js | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/js/dojo-1.7.2/dojox/mvc/Bind.js b/js/dojo-1.7.2/dojox/mvc/Bind.js new file mode 100644 index 0000000..edb95d2 --- /dev/null +++ b/js/dojo-1.7.2/dojox/mvc/Bind.js @@ -0,0 +1,62 @@ +//>>built +define("dojox/mvc/Bind", [ + "dojo/_base/lang", + "dojo/_base/array" +], function(lang, array){ + var mvc = lang.getObject("dojox.mvc", true); + /*===== + mvc = dojox.mvc; + =====*/ + + return lang.mixin(mvc, { + bind: function(/*dojo.Stateful*/ source, /*String*/ sourceProp, + /*dojo.Stateful*/ target, /*String*/ targetProp, + /*Function?*/ func, /*Boolean?*/ bindOnlyIfUnequal){ + // summary: + // Bind the specified property of the target to the specified + // property of the source with the supplied transformation. + // source: + // The source dojo.Stateful object for the bind. + // sourceProp: + // The name of the source's property whose change triggers the bind. + // target: + // The target dojo.Stateful object for the bind whose + // property will be updated with the result of the function. + // targetProp: + // The name of the target's property to be updated with the + // result of the function. + // func: + // The optional calculation to be performed to obtain the target + // property value. + // bindOnlyIfUnequal: + // Whether the bind notification should happen only if the old and + // new values are unequal (optional, defaults to false). + var convertedValue; + return source.watch(sourceProp, function(prop, oldValue, newValue){ + convertedValue = lang.isFunction(func) ? func(newValue) : newValue; + if(!bindOnlyIfUnequal || convertedValue != target.get(targetProp)){ + target.set(targetProp, convertedValue); + } + }); + }, + + bindInputs: function(/*dojo.Stateful[]*/ sourceBindArray, /*Function*/ func){ + // summary: + // Bind the values at the sources specified in the first argument + // array such that a composing function in the second argument is + // called when any of the values changes. + // sourceBindArray: + // The array of dojo.Stateful objects to watch values changes on. + // func: + // The composing function that is called when any of the source + // values changes. + // tags: + // protected + var watchHandles = []; + array.forEach(sourceBindArray, function(h){ + watchHandles.push(h.watch("value", func)); + }); + return watchHandles; + } + }); +}); |
