Sys.UI.Control的理解
有如下代码:
1 /// <reference name="MicrosoftAjax.js"/> 2 3 Type.registerNamespace("AjaxEnabled"); 4 5 //create constructor 6 AjaxEnabled.PassTextBox = function(element) { 7 AjaxEnabled.PassTextBox.initializeBase(this, [element]); 8 9 this._weakCssClass = null; 10 this._mediumCssClass = null; 11 this._strongCssClass = null; 12 } 13 14 //define class 15 AjaxEnabled.PassTextBox.prototype = { 16 17 //initialize the UI control 18 initialize: function() { 19 AjaxEnabled.PassTextBox.callBaseMethod(this, 'initialize'); 20 21 this._onKeyupHandler = Function.createDelegate(this, this._onKeyup); 22 $addHandlers(this.get_element(), {'keyup' : this._onKeyup}, this); 23 }, 24 25 dispose: function() { 26 $clearHandlers(this.get_element()); 27 AjaxEnabled.PassTextBox.callBaseMethod(this, 'dispose'); 28 }, 29 30 //define key press event 31 _onKeyup : function(e) { 32 33 //get password text 34 var pass = this.get_element().value; 35 var strength = this.returnPasswordStrength(pass); 36 37 switch (strength) { 38 case "Weak": 39 this.get_element().className = this._weakCssClass; 40 break; 41 case "Medium": 42 this.get_element().className = this._mediumCssClass; 43 break; 44 case "Strong": 45 this.get_element().className = this._strongCssClass; 46 break; 47 } 48 }, 49 50 //define properties 51 get_weakCssClass: function() { 52 return this._weakCssClass; 53 }, 54 set_weakCssClass: function(value) { 55 this._weakCssClass = value; 56 }, 57 get_mediumCssClass: function() { 58 return this._mediumCssClass; 59 }, 60 set_mediumCssClass: function(value) { 61 this._mediumCssClass = value; 62 }, 63 get_strongCssClass: function() { 64 return this._strongCssClass; 65 }, 66 set_strongCssClass: function(value) { 67 this._strongCssClass = value; 68 }, 69 70 returnPasswordStrength: function(password) { 71 var strPass = new String(password.toString()); 72 if (strPass.length < 5) 73 { 74 return "Weak"; 75 } 76 else 77 { 78 if (strPass.length < 8) 79 { 80 return "Medium"; 81 } 82 else 83 { 84 return "Strong"; 85 } 86 } 87 } 88 } 89 90 //register class as a Sys.Control 91 AjaxEnabled.PassTextBox.registerClass('AjaxEnabled.PassTextBox', Sys.UI.Control); 92 93 //notify loaded 94 if (typeof(Sys) !== 'undefined') Sys.Application.notifyScriptLoaded();
第6、7行表明Sys.UI.Control的构造函数带参数。这里element正好是MicrosoftAjax框架会填充到这个函数里面的,DOM对象。这个DOM对象将会成为我们构造的Sys.UI.Control对象里面的一个property,这样之后我们就可以通过this.get_element()方法直接访问到这个dom对象了。
第21行的作用是保证_onKeyup时间被触发的时候,this对象一定是Sys.UI.Control对象。
第22行的作用是通过this.get_element()方法获得与这个控件关联的dom对象,然后将对应的事件绑定上去。
第51到68行的getter/setter作用是在使用$create方法是,传入值的时候使用的。
浙公网安备 33010602011771号