ASP.NET Atlas簡單控件介紹之兩個基類
2024-07-10 13:07:06
供稿:網友
 
  asp.net atlas中引入了客戶端控件的概念,用面向對象思想將客戶端javascript將要操作的dom元素封裝起來,帶來了更清晰的代碼模型以及更好的可復用性(不足之處是效率有所降低)。atlas的客戶端控件是連接javascript與dom元素的橋梁,我們應該盡可能的使用客戶端控件與dom元素打交道,也就是以atlas的方法來編寫我們的程序。同時,atlas對javascript面向對象方面的強大擴展(請參考:asp.net atlas對javascript的擴展),也讓我們很容易通過繼承,覆寫等方法來構建自定義的控件。 
  在前面的一些帖子中,我介紹了一些atlas中較復雜的控件。但同時,atlas也提供了一些比較簡單/基礎的客戶端控件,同樣在開發中十分有用,讓我們通過這個系列來熟悉atlas自帶的簡單客戶端控件。
  所有的atlas客戶端控件都繼承于sys.ui.control基類,同時sys.ui.control繼承于sys.component基類,讓我們先看看sys.component提供的屬性:
  ·id:atlas組件的標識符,將atlas客戶端組件與dom元素連接起來。這個id值與dom元素的id屬性值相同,atlas使用這個id以找到相關的dom元素。 
  ·bindings:該組件的綁定集合。關于atlas中的綁定,請參考:atlas揭秘 —— 綁定(binding)。 
  ·datacontext:該組件的綁定的操作對象。如果您設置了這個屬性,那么所有綁定條目默認會繼承這個對象,但您也可以在綁定的聲明中覆蓋這個默認的設定。 
  ·isinitialized:布爾值,代表該組件是否被初始化過。只讀。 
  ·isupdating:該組件是否正在更新中,在開始調用beginupdate()方法到調用endupdate()方法期間為true,其他時間為false。只讀。 
  sys.component還提供如下的方法:
  ·beginupdate與endupdate:依賴于基類的實現,可以通過調用這兩個方法延遲或一起更新一批組件,以提高性能或減少屏幕閃爍。 
  ·initialize:構造函數,不必多言,繼承類可以擴展該方法并初始化自己的成員。 
  還有如下事件: propertychanged:當組件的某個屬性變化時,應該引發該事件。atlas綁定的實現依賴于這個事件。 
  現在讓我們看看sys.ui.control提供的屬性:
  ·accesskey:獲取或設置控件的accesskey,該屬性是dom元素中的accesskey屬性的包裝。 
  ·associatedelement:返回控件的相關dom元素。這個屬性應該傳入給控件的構造函數,并在構造以后不可以修改。 
  ·behaviors:該組件的behavior集合。關于atlas中的behavior,請參考:在asp.net atlas中創建自定義的behavior。 
  ·cssclass:獲取或設置控件的css class,該屬性是dom元素中的class屬性的包裝。 
  ·enabled:代表該控件是否被啟用,該屬性是dom元素中的enabled屬性的包裝。 
  ·parent:獲取或設置該控件的父控件。 
  ·style:獲取該控件相對應的dom元素的style屬性值。 
  ·tabindex:獲取或設置該控件的tab index。 
  ·visibilitymode:獲取或設置該控件在隱藏時的顯示模式,可選枚舉值:sys.ui.visibilitymode.collapse代表該控件隱藏時不占用頁面空間,sys.ui.visibilitymode.hidden代表該控件隱藏時依然占有其位置。 
  ·visible:獲取或設置該控件是否可見。 
  sys.ui.control同樣提供如下方法:
  ·addcssclass:為該控件添加一個css class。 
  ·removecssclass:刪除該控件的一個css class。 
  ·containscssclass:返回布爾值,代表該控件是否有指定的css class。 
  ·togglecssclass:如果該控件沒有指定的css class,則添加,如果有,則刪除。 
  ·focus:使該控件獲得輸入焦點。 
  ·scrollintoview:使該控件滾動到屏幕可視范圍內。 
  ·onbubbleevent:處理該控件的子控件發出的bubble事件。
  ·raisebubbleevent:該方法會調用該控件所有父控件的onbubbleevent方法,來實現bubble事件。
  在接下來的幾篇中,我會介紹繼承或間接繼承于sys.ui.control的atlas內建控件,希望不會像這篇一樣枯燥。