AngularJS – Tab 介紹篇

為了方便文章閱讀,本篇將Tab翻譯成頁籤

這個案例的複雜度會比較前面高一些,因為它不僅僅是使用我們一直提到的AngularJS,為了要製作頁面上面的一些互動效果,還加入了Bootstrape這個通常被用來當RWD的框架,不過也僅僅是套用了幾個類別,所以大家也不用太擔心,接下來我們先看一下這個案例最後希望要達成的效果頁面

在看過了目標頁面後,我們先來了解一下需要怎麼樣架構我們的HTML,首先是CSS和Javascript的引入,分別是AngularJS、jQuery、Bootstrap CSS以及Javascript:

<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.3.2/angular.min.js"></script>
<script src="https://code.jquery.com/jquery.min.js"></script>
<link href="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.2/css/bootstrap.min.css" rel="stylesheet" type="text/css" />
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.2/js/bootstrap.min.js"></script>

在HTML文件中,必須有項目清單標籤ul、li,而在ul標籤中需套用nav nav-pills這兩個css類別,這兩個類別是由Bootstrape的css所提供的,li標籤是包覆著超連結的a標籤,下圖案例是希望可以產生三個頁籤。

AngularJS Part5 Slide1
AngularJS Part5 Slide1

在a標籤中加入ng-click=”tab = 1″、ng-click=”tab = 2″、ng-click=”tab = 3″去設定當使用者按下連結後tab變數會隨著變化,另外為了方便觀察是否成功,在頁面上利用表達式將tab變數顯示出來。

AngularJS Part5 Slide1
AngularJS Part5 Slide2

若一切順利,在我們按下不同的頁籤連結時,畫面上應該會有數字上面的變化。

AngularJS Part5 Slide3
AngularJS Part5 Slide3
AngularJS Part5 Slide4
AngularJS Part5 Slide4

接下來開始製作點選頁籤後的內容頁面,同樣的內容頁面也應該有三個才對,在HTML中產生三個div,其中套用Bootstrape所提供的CSS panel類別,div的內容部分可依照需求置入。

AngularJS Part5 Slide5
AngularJS Part5 Slide5

在div中利用ng-show去判斷tab變數的值來切換顯示。

AngularJS Part5 Slide6
AngularJS Part5 Slide6

完成後,在我們點選不同的連結時,內容的部分也應該會隨著變動。

AngularJS Part5 Slide7
AngularJS Part5 Slide7

接下來我們在section標籤中設定ng-init=”tab=1″的屬性來決定tab變數的初始值。

AngularJS Part5 Slide8
AngularJS Part5 Slide8

接下來在li內新增ng-class的屬性,依tab變數的值來切換active的CSS屬性(該屬性由Bootstrape提供樣式),其中三個連續的等號是判斷該變數與值完全相同的意思。

AngularJS Part5 Slide9
AngularJS Part5 Slide9

這個動作的目的是希望當網友點選之後,可以如下圖所示,清楚的標示目前頁面上所顯示的是第幾個項目。

AngularJS Part5 Slide10
AngularJS Part5 Slide10

到目前為止,大概就完成了我們希望呈現的頁籤效果,大家可以透過JS Bin來測試看看到目前為止的程式碼。

<!DOCTYPE html>
<html ng-app>
<head>
<meta name="description" content="AngularJS Tabs Example 1">
<script src="//ajax.googleapis.com/ajax/libs/angularjs/1.3.2/angular.min.js"></script>
<script src="//code.jquery.com/jquery.min.js"></script>
<link href="//maxcdn.bootstrapcdn.com/bootstrap/3.3.2/css/bootstrap.min.css" rel="stylesheet" type="text/css" />
<script src="//maxcdn.bootstrapcdn.com/bootstrap/3.3.2/js/bootstrap.min.js"></script>
  <meta charset="utf-8">
  <title>AngularJS Tabs Example 1</title>
</head>
<body>
  <section ng-init="tab=1">
    
    <ul class="nav nav-pills">
      <li ng-class="{ active: tab===1 }">
        <a href="" ng-click="tab=1">滑鼠墊</a>
      </li>
      <li ng-class="{ active: tab===2 }">
        <a href="" ng-click="tab=2">馬克杯</a>
      </li>
      <li ng-class="{ active: tab===3 }">
        <a href="" ng-click="tab=3">杯墊</a>
      </li>
    </ul>
    
    <div class="panel" ng-show="tab===1">
      <h4>馬老師雲端研究室 滑鼠墊</h4>
      <p>產品介紹...</p>
    </div>
    <div class="panel" ng-show="tab===2">
      <h4>馬老師雲端研究室 馬克杯</h4>
      <p>產品介紹...</p>
    </div>
    <div class="panel" ng-show="tab===3">
      <h4>馬老師雲端研究室 杯墊</h4>
      <p>產品介紹...</p>
    </div>
  
  </section>
</body>
</html>

在看完了上面的案例之後,我們可以觀察到程式邏輯判斷的部分都是直接撰寫在HTML頁面上,那如果我們要把邏輯判斷的部分從HTML拆開寫到Javascript檔又應該要如何處理呢?首先,不用說的當然是必須要有應用程式的建立以及控制器囉!下圖中我們開始新增控制器,並且在section標籤中,輸入ng-controller=”panelController as panel”的屬性,相信在看了前幾篇教學的同學們對於這樣的項目是再熟悉不過了!接下來在控制器中,決定tab變數的初始值,就可以把原來的ng-init屬性刪除了。

AngularJS Part5 Slide11
AngularJS Part5 Slide11

在ng-click後去執行控制器中的selectTab函數,並且針對該函數帶入不同的值,利用帶入的值來改變tab變數值。

AngularJS Part5 Slide12
AngularJS Part5 Slide12

在ng-click後去執行控制器中的isSelected函數,也帶出不同的值給函數,讓函數可以回傳tab===1或2、3這樣的內容給ng-show使用。

AngularJS Part5 Slide13
AngularJS Part5 Slide13

這樣一來我們邏輯判斷的部分就會和網頁內容有所區隔,大家也可以透過JS Bin來測試這樣的程式結構。

<!DOCTYPE html>
<html ng-app="store">
<head>
<meta name="description" content="AngularJS Tabs Example 2">
<script src="//ajax.googleapis.com/ajax/libs/angularjs/1.3.2/angular.min.js"></script>
<script src="//code.jquery.com/jquery.min.js"></script>
<link href="//maxcdn.bootstrapcdn.com/bootstrap/3.3.2/css/bootstrap.min.css" rel="stylesheet" type="text/css" />
<script src="//maxcdn.bootstrapcdn.com/bootstrap/3.3.2/js/bootstrap.min.js"></script>
  <meta charset="utf-8">
  <title>AngularJS Tabs Example 2</title>
</head>
<body>
  <section ng-controller="PanelController as panel">
    <ul class="nav nav-pills">
      <li ng-class="{ active: panel.isSelected(1) }">
        <a href="" ng-click="panel.selectTab(1)">滑鼠墊</a>
      </li>
      <li ng-class="{ active: panel.isSelected(2) }">
        <a href="" ng-click="panel.selectTab(2)">馬克杯</a>
      </li>
      <li ng-class="{ active: panel.isSelected(3) }">
        <a href="" ng-click="panel.selectTab(3)">杯墊</a>
      </li>
    </ul>
    <div class="panel" ng-show="panel.isSelected(1)">
      <h4>馬老師雲端研究室 滑鼠墊</h4>
      <p>產品介紹...</p>
    </div>
    <div class="panel" ng-show="panel.isSelected(2)">
      <h4>馬老師雲端研究室 馬克杯</h4>
      <p>產品介紹...</p>
    </div>
    <div class="panel" ng-show="panel.isSelected(3)">
      <h4>馬老師雲端研究室 杯墊</h4>
      <p>產品介紹...</p>
    </div>
  </section>
</body>
</html>
(function(){
  var app = angular.module('store', []);
  
  app.controller('PanelController', function(){
    this.tab = 1;
    
    this.selectTab = function(setTab){
      this.tab = setTab;
    };

    this.isSelected = function(checkTab){
      return this.tab === checkTab;
    };
  });
  
})();

You may also like...

61,820 Responses

  1. Vernonneato表示:

    Say hello to Phoenix TradeтАФthe Solana-native DEX designed for serious traders. Whether you’re using Phoenix Trade App, earning through Phoenix Trade Staking, or exploring the Phoenix Trade Token, itтАЩs all optimized for speed and transparency. From real-time Phoenix Trade Volume to community access on Phoenix Trade Discord, everythingтАЩs built with you in mind. New to the platform? Follow the Phoenix Trade Guide and unlock more with the Phoenix Trade Airdrop. Join the movement now at https://phoenixtrade.me !

  2. Robertdom表示:

    Power up your crypto strategy with Balancer—where flexibility meets innovation. Use Balancer Swap to trade smarter, explore Balancer vesting options, and stay on top of the game with Balancer Change updates. With features like Balancer governance, Balancer token vesting, and detailed Balancer guide content, it’s built for both beginners and pros. Love transparency? So do we. That’s why Balancer reviews speak for themselves. Start now at https://balancer.ac and take control of your crypto future.

  3. Ismaelendut表示:

    Say hello to SablierтАФthe leading platform for token streaming and vesting. Whether youтАЩre using Sablier token streaming for payroll, exploring Sablier vesting schedules, or claiming from a Sablier Airdrop Claim, itтАЩs all powered by Sablier Labs and the advanced Sablier API. Wondering how secure it is? The verified Sablier audit speaks for itself. Use your Sablier bonus code and start streaming at https://sablier.cc today!

  4. JosephSward表示:

    Say goodbye to outdated liquidity tools—Balancer is here to transform your DeFi journey. Whether you’re exploring Balancer token (BAL), participating in Balancer airdrop vesting, or navigating Balancer Drop, the Balancer app gives you seamless access and full control. Dive into Balancer liquidity, manage your Balancer Portfolio, and track everything with Balancer Mirror. Check Balancer reviews, learn about Balancer pricing, and join the movement at https://bccgame.org !

  5. Robertdom表示:

    Say goodbye to outdated liquidity tools—Balancer is here to transform your DeFi journey. Whether you’re exploring Balancer token (BAL), participating in Balancer airdrop vesting, or navigating Balancer Drop, the Balancer app gives you seamless access and full control. Dive into Balancer liquidity, manage your Balancer Portfolio, and track everything with Balancer Mirror. Check Balancer reviews, learn about Balancer pricing, and join the movement at https://balancer.ac !

  6. Vernonneato表示:

    New to trading on Solana? Phoenix Trade is leading the way with a high-speed, zero-order book Solana DEX experience. Built for power users, Phoenix Trade offers deep liquidity, lightning-fast execution, and secure Phoenix Trade Wallet integration. Curious about Phoenix Trade Review? Traders love the platformтАЩs low Phoenix Trade Fees and solid Phoenix Trade Security. Want to know Phoenix Trade Tutorial? ItтАЩs simpleтАФjust Phoenix Trade Login and explore the features. Ready to start? Visit https://phoenixtrade.me and experience the future of decentralized trading today!

  7. Jasonthymn表示:

    Say hello to LiquifiтАФa smarter way to manage vesting. Whether it’s Liquifi DAO vesting or automated Liquifi drop delivery, Liquifi Finance makes it effortless. Backed by a full Liquifi audit and trusted Liquifi security, itтАЩs a go-to for leading projects. Learn with the Liquifi Guide or dive into a step-by-step Liquifi tutorial. ItтАЩs fast, secure, and built for Web3. Liquifi sign up today at https://liquifi.tech !

  8. BrianStani表示:

    vavada вход: vavada вход – вавада зеркало

  9. Автоматизация дома — просто с Somfy
    Автоматика Somfy Автоматика Somfy . Прокарниз

  10. Robertdom表示:

    Looking to maximize your DeFi game? Explore Balancer, the ultimate platform for smart liquidity and optimized portfolios. With advanced Balancer features like Balancer Swap, Balancer stable pools, and Balancer Boost, it’s built for efficiency and control. Curious about Balancer token vesting or Balancer DAO vesting? The Balancer guide has it all. Plus, with Balancer security and top-notch Balancer governance, your assets are in good hands. Visit https://balancer.ac and experience the future of DeFi today!

  11. KennethKex表示:

    pin-up casino giris: pin up azerbaycan – pin up az

  12. Nightroe表示:

    Онлайн чат с психологом без регистрации. Онлайн-консультация психолога. Анонимный чат с психологом телеграм.

    Получить поддержку по широкому кругу вопросов.
    Решим вместе вашу проблему.
    Эмоциональное состояние: тревога, депрессия, стресс, эмоциональное выгорание.

  13. JamesMaf表示:

    New to DeFi? Instadapp is transforming decentralized finance with its all-in-one platform. From Instadapp Pro to Instadapp Lite, users can manage assets with ease using Instadapp Avocado Wallet and Instadapp Fluid. Packed with powerful tools like Instadapp Flashloan and DeFi Smart Accounts (DSA), it’s the smartest way to move assets. Curious about what is Instadapp? Check the Instadapp overview or dive into the Instadapp App. Want to know how to use Instadapp? It’s easy—get started now at http://instaoapp.com and take full control of your DeFi future today!

  14. Elmerbuils表示:

    вавада официальный сайт: вавада зеркало – vavada вход

  15. MichaelJed表示:

    Say hello to Juice Finance—your DeFi edge starts here! Tap into the power of Juice Finance yield farming and Juice Finance leverage, all backed by Juice Finance Security and verified Juice Finance Audits. The JUICE token drives the ecosystem, while the trusted Juice Finance Team keeps innovation flowing. Questions? Juice Finance Support is always here to help. Learn what is Juice Finance and explore the future of finance. Juice Finance app is ready—start now at https://juice.ac !

  16. KennethKex表示:

    вавада: vavada casino – vavada

  17. Elmerbuils表示:

    пин ап вход: пин ап вход – пинап казино

  18. Jeffreymen表示:

    Строительство малоэтажных домов под ключ
    ипотека без первоначального взноса на строительство дома
    Ваш дом – ваши правила:
    выбирайте, как быстро
    хотите заехать
    Вы сами решаете, на каком этапе завершить строительство. Дом можно получить в базовой комплектации, подготовленным к чистовой отделке или укомплектованным к заселению
    Фиксированные сроки строительства и стоимость по договору для любого варианта готовности.
    Ответственность, контроль на всех этапах и проверенные технологии — принципы, которые
    позволили нам создать сотни уютных и надежных домов в Московской, Тверской, Ярославской, Тульской, Владимировской, Калужской области.

  19. KennethKex表示:

    пин ап зеркало: пин ап зеркало – пин ап вход

  20. BrianStani表示:

    pin up: pin-up casino giris – pin-up casino giris

  21. Victorsox表示:

    Say hello to Super Sushi Samurai—the ultimate crypto game experience! Earn with Super Sushi Samurai land, explore the Super Sushi Samurai land map, and boost your gameplay using Super Sushi Samurai strategy and Super Sushi Samurai tips. Whether you’re collecting Super Sushi Samurai NFT items or gearing up for the Super Sushi Samurai airdrop, the SSS game delivers nonstop action. Want in? Buy SSS token and join the community on Super Sushi Samurai Telegram. Play now at https://sssgame.ink !

  22. DwayneRoP表示:

    Curious about next-gen DeFi? Sky Money is transforming savings and rewards through the powerful Sky Protocol. From SKY token rewards to smart MKR to SKY conversion, the Sky ecosystem is designed for performance and transparency. With integrated Sky Savings Rate and full support for sky ETH and sky Ethereum, it’s built to grow. Want to know more? The Sky Atlas and Sky Stars program show you the way. Ready to earn? Visit https://skymoney.net and unlock your Sky rewards today!

  23. DexterGogma表示:

    Об этом кворке
    Выполню прогон Хрумером по комментариям. Прогон сайта может быть анкорным или безанкорным. По результатам прогона вы получите программный отчёт в формате txt.

    Зачем нужны прогоны XRumer?

    Я использую прогоны Хрумером для нескольких задач, для которых Хрумер подходит идеально:

    Анкорный прогон информационных сайтов по очень широкой семантике (свои сайты прогоняю по 80% всей имеющейся семантики);
    Безанкорный прогон любых сайтов (для раскрутки и ускорения индексации белых сайтов, дорвеев, накрутки пузомерок, увеличения и разбавления ссылочной массы);
    Прогон Хрумером для ускорения индексации биржевых ссылок (если накупили биржевого хлама, который не хочет попадать в индекс);
    Многоуровневые ссылки (страница вашего сайта — 10 дорогих анкорных ссылок — 100 дешевых ссылок — прогон Хрумером);
    Прогон Хрумером отдельного домена с постраничным редиректом на основной сайт (отдельный домен можно неистово гонять, так как в любой момент он может быть отклеен от основного сайта, к тому же, эти ссылки можно скрыть от конкурентов).
    Д ля этих задач прогон Хрумером — идеальное решение. Кроме того, можно прогонять Хрумером не только страницы сайта, но и YouTube-видео, публикации в Pinterest или других соцсетях.

  24. JoshuaTic表示:

    Exploring DeFi? Compound is changing the game with powerful Compound Finance tools designed for real results. Through the Compound app, users enjoy smart Compound lending, easy Compound borrowing, and competitive Compound interest rates. The Compound protocol is built on transparency, using Compound cTokens and driven by Compound governance. Want to grow your earnings? With high Compound APY and support for Compound Finance staking, you’re in control. Curious about Compound Finance review? Users love the security and reliability. Try it now—Compound Finance login at http://compound.ad and take charge of your Compound crypto journey today!

  25. MichaelJed表示:

    Juice Finance is here to stay! With cross-chain power, Juice Finance on Blast L2, and high-yield Juice Finance staking, the platform is built for serious DeFi users. Juice Finance lending and Juice Finance leverage open new doors, while Juice Finance Security ensures peace of mind. Concerned about Juice Finance scam talk? Don’t be—users trust the platform’s Juice Finance Audits and transparency. Want to dive in? Visit https://juice.ac , explore the Juice Finance Blog, and join the DeFi movement with Juice Finance today!

  26. Richardfek表示:

    vavada вход vavada casino vavada casino

  27. Richardfek表示:

    pin up casino pinup az pin up

  28. Elmerbuils表示:

    вавада казино: vavada – вавада официальный сайт

  29. DwayneRoP表示:

    Say hello to Sky Money—the future of crypto finance. Backed by Spark Protocol Sky and MakerDAO Sky, users benefit from stable tools like USDS Sky, USDS ETH, and sUSDS Sky. Whether you’re earning Sky Token Rewards or exploring SKY token potential, the platform offers everything you need. Learn more about sky crypto, how Sky Protocol works, and start earning today at https://skymoney.net !

發佈回覆給「Jasonthymn」的留言 取消回覆

發佈留言必須填寫的電子郵件地址不會公開。