Requires

Provides

Data.js

Get/Set javascript controller into element

License:
MIT-style license.
  1. 19
  2. 20
  3. 21
  4. 22
  5. 23
  6. 24
  7. 25
  8. 26
  9. 27
  10. 28
  11. 29
  12. 30
  13. 31
  14. 32
  15. 33
  16. 34
  17. 35
  18. 36
  19. 37
  20. 38
  21. 39
  22. 40
  23. 41
  24. 42
  25. 43
  26. 44
  27. 45
  28. 46
  29. 47
  30. 48
  31. 49
Element.Properties.widget = { get: function(){ var widget, element = this; while (element && !(widget = element.retrieve('widget'))) element = element.getParent(); if (widget && (element != this)) this.store('widget', widget); return widget; }, set: function(options) { if (this.retrieve('widget')) { return this.retrieve('widget').setOptions(options) } else { var given = this.retrieve('widget:options') || {}; for (var i in options) { if (given[i] && i.match('^on[A-Z]')) { given[i] = (function(a,b) { // temp solution (that is 1.5 years in production :( ) return function() { // wrap two functions in closure instead of overwrite a.apply(this, arguments); // TODO: some way of passing a raw array of callbacks b.apply(this, arguments); } })(given[i], options[i]) } else { var o = {}; o[i] = options[i]; $extend(given, o); } } this.store('widget:options', given); } } };