_patches.js 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. define("dojox/mvc/_patches", [
  2. "dojo/_base/lang",
  3. "dojo/_base/array",
  4. "dijit/_WidgetBase",
  5. "./_DataBindingMixin",
  6. "dijit/form/ValidationTextBox",
  7. "dijit/form/NumberTextBox"
  8. ], function(lang, array, wb, dbm, vtb, ntb){
  9. /*=====
  10. vtb = dijit.form.ValidationTextBox;
  11. ntb = dijit.form.NumberTextBox;
  12. dbm = dojox.mvc._DataBindingMixin;
  13. wb = dijit._WidgetBase;
  14. =====*/
  15. //Apply the data binding mixin to all dijits, see mixin class description for details
  16. lang.extend(wb, new dbm());
  17. // monkey patch dijit._WidgetBase.startup to get data binds set up
  18. var oldWidgetBaseStartup = wb.prototype.startup;
  19. wb.prototype.startup = function(){
  20. this._dbstartup();
  21. oldWidgetBaseStartup.apply(this);
  22. };
  23. // monkey patch dijit._WidgetBase.destroy to remove watches setup in _DataBindingMixin
  24. var oldWidgetBaseDestroy = wb.prototype.destroy;
  25. wb.prototype.destroy = function(/*Boolean*/ preserveDom){
  26. if(this._modelWatchHandles){
  27. array.forEach(this._modelWatchHandles, function(h){ h.unwatch(); });
  28. }
  29. if(this._viewWatchHandles){
  30. array.forEach(this._viewWatchHandles, function(h){ h.unwatch(); });
  31. }
  32. oldWidgetBaseDestroy.apply(this, [preserveDom]);
  33. };
  34. // monkey patch dijit.form.ValidationTextBox.isValid to check this.inherited for isValid
  35. var oldValidationTextBoxIsValid = vtb.prototype.isValid;
  36. vtb.prototype.isValid = function(/*Boolean*/ isFocused){
  37. return (this.inherited("isValid", arguments) !== false && oldValidationTextBoxIsValid.apply(this, [isFocused]));
  38. };
  39. // monkey patch dijit.form.NumberTextBox.isValid to check this.inherited for isValid
  40. var oldNumberTextBoxIsValid = ntb.prototype.isValid;
  41. ntb.prototype.isValid = function(/*Boolean*/ isFocused){
  42. return (this.inherited("isValid", arguments) !== false && oldNumberTextBoxIsValid.apply(this, [isFocused]));
  43. };
  44. });