iT邦幫忙

DAY 4
4

AngularJS系列 第 4

使用 AngularJS 心得 Day 4 - 美化表格( ng-class-odd, ng-class-even )

在上個範例中,在說明 JSON 資料格式 ng-repeat 的應用時,因為我偷偷地使用了 Twitter Bootstrap ,所以表格變漂亮了。但不能老是跟大家一樣都套 Bootstrap ,客戶最愛客製了,就是想要與眾不同。在此, ng 也提供了兩個好用的 API ng-class-odd, ng-class-even
奇 / 偶列變色

雖然在 CSS3 當中有提供偽元素 :nth-child() 設定 table 中奇 / 偶數列的 style ,但因為 IE8 以前的版本並不支援,所以只好自己來實作。

如果不會 JavaScript, jQuery 的設計師,可能只好慢慢地複製貼上;如果會 jQuery 的設計師,或許可以寫個簡短的 code 來套用。但是現在, ng 很貼心的提供了 ng-class-oddng-class-even 來實作變色功能,只要在 HTML 中寫個 attribute 就能夠輕鬆完成。

HTML :

  <table>
    <tr ng-repeat="obj in data" ng-class-odd="'odd'" ng-class-even="'even'">
      <td ng-repeat="value in obj" ng-bind="value"></td>
    </tr>
  </table>

CSS :

  .odd {
    background-color: #ffdb58;
  }
  .even {
    background-color: #597dff;
  }

Day 04 - 1

不知道各位有沒有發現,在使用 ng-class-oddng-class-even 時,值是以 'odd''even' 字串的方式呈現。
這是因為在使用 ng- 相關功能的時候,他會去進去 controller 問問橋樑 $scope有沒有我這名稱的屬性可以用啊? ,但由於我不想設定 class name 還要透過 $scope 來設定,所以我就直接將名稱以字串的方式做設定,這樣 ng 就知道這設定只是個普通的字串,而不是 $scope 的屬性。


如果如果,真的要藉由 controller 來做設定,當然也是可以的

HTML :

  <table>
    <tr ng-repeat="obj in data" ng-class-odd="classNameOdd" ng-class-even="classNameEven">
      <td ng-repeat="value in obj" ng-bind="value"></td>
    </tr>
  </table>

JavaScript :

        $scope.classNameOdd = 'odd';
        $scope.classNameEven = 'even';

Day 04 - 2

如同修改過後的 code ,ng-class-oddng-class-even 若不以字串的方式設定,即會去 controller 中尋找相對應 $scope 的屬性,並將值作 binding 。


今天的紀錄比較少,因為好晚了,就此先休息。明天再來繼續衝刺吧!

此文同步更新於 EdenYeh's GitHub
歡迎各位多給我些指教,我會虛心學習的 =D

好文推薦提到:
javascript中的位元運算子 (3)
用Javascript征服演算法 (2-Gray Code)
Day11 實作 WinJS.UI.Rating


上一篇
使用 AngularJS 心得 Day 3 - 填表格( ng-repeat )
系列文
AngularJS4
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

2 則留言

0
azole
iT邦新手 5 級 ‧ 2013-09-27 00:20:41

實用~

葉宇霖 iT邦新手 4 級 ‧ 2013-09-27 00:35:28 檢舉

小賴賴的才實用
我只是班門弄斧
哭哭

0
azole
iT邦新手 5 級 ‧ 2013-09-29 01:13:00

敲碗求更文

葉宇霖 iT邦新手 4 級 ‧ 2013-10-01 09:29:40 檢舉
azole iT邦新手 5 級 ‧ 2013-10-01 11:15:40 檢舉

灑花 繼續加油啊~~

我要留言

立即登入留言