ms-class的進化


ms-class是avalon用得最多的幾個綁定之一,也正因為如此其功能一直在擴充中。根據時期的不同,分為舊風格與新風格兩種。

舊風格是指正在ms-class后面跟着類外,然后在綁定值中添加表達式,即ms-class-xxx="prop"。其中xxx為一個類名。在jQuery ui中,一些類名非常長,以-連接起來,如ui-widget-content,我們直接把它加在后面好了。比如下例:

<div 
 ms-class-ui-datepicker-week-end="weekend"
 ms-class-ui-state-disabled="disabled"
 ms-class-ui-datepicker-unselectable="selected">{{date}}</div>

舊風格使用簡單,易上手,只要記得在ms-class-后加類名,=號加表達式,來控制它的添加移除就行了。但缺點也明顯:

  • 每個ms-class只能控制一個類名,如果有N個類名其實都是由同一個綁定屬性控制的,也不得分開寫。
  • ms-class后面只能接受全部是小寫的類名,因為在HTML 規范中,屬性名都只能是小寫,你就算大寫了,它也會轉換為小寫 。
  • 有些類名,我們想動態生成出來。

針對它們,新風格搞出來,它要求ms-class后面什么也不寫,或只跟着整數,然后在屬性值的左邊寫類名,中間寫一個冒號,右邊寫表達式。

比如第一個多類名控制的需求,可以這樣做:ms-class="aaa bbb ccc:prop"

第2需求,可以這樣做:ms-class="AAA className : 1+ 2"。

第3需求,可以這樣做:ms-class="aaa width{{w}} height{{h}}: ddd", 當w=200, h=300, ddd為true時,它會為綁定的元素節點添加三個類名,aaa,width200,height300。

如果要用到多個ms-class呢,新風格可以這樣做

<div 
 ms-class="aaa bbb"
 ms-class="ui-state-disabled:disabled"
 ms-class-="ui-state-disabled:disabled"
 ms-class-1="ui-datepicker-ok:test">{{date}}</div>

此外,在新風格中,如果類名是通過插值表達式實現,比如上面的ms-class="aaa width{{w}} height{{h}}: ddd",當w=200時,它會為元素添加width200,然后過段時間,w變成300時,它會去掉之前的width200,再添加width300,非常人性化。詳見這里


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM