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...

51,751 Responses

  1. Matthewweind表示:

    buy amoxicillin online no prescription: cheapest amoxil – amoxicillin 500 tablet

  2. I like it when people get together and share opinions. Great website, continue the good work.

  3. NicolasLoole表示:

    http://zithromax.company/# zithromax online usa

  4. SamuelCic表示:

    https://amoxil.llc/# purchase amoxicillin online without prescription

  5. Stevenjaw表示:

    http://amoxil.llc/# cost of amoxicillin 30 capsules
    zithromax capsules

  6. I really like it whenever people come together and share ideas. Great site, continue the good work!

  7. Michaelgax表示:

    rybelsus cost Rybelsus 14 mg Buy semaglutide pills

  8. Spot on with this write-up, I actually believe this website needs far more attention. I’ll probably be back again to read more, thanks for the info.

  9. Matthewweind表示:

    Rybelsus 14 mg: rybelsus generic – buy semaglutide online

  10. NicolasLoole表示:

    https://semaglutide.win/# order Rybelsus for weight loss

  11. I wanted to thank you for this excellent read!! I absolutely loved every bit of it. I have you saved as a favorite to check out new things you post…

  12. NicolasLoole表示:

    https://amoxil.llc/# order amoxicillin no prescription

  13. gruzpoputno表示:

    Найдите попутный груз и отправьте его из Новосибирска с минимальными затратами https://vk.com/gruz_poputno

  14. An outstanding share! I have just forwarded this onto a coworker who was conducting a little research on this. And he actually ordered me lunch simply because I found it for him… lol. So allow me to reword this…. Thanks for the meal!! But yeah, thanx for spending time to talk about this matter here on your internet site.

  15. SamuelCic表示:

    https://gabapentin.auction/# buy brand neurontin

  16. Andrewnof表示:

    Застройщик жк резиденция лайф сэкономил на всем, низкое качество. Не рекомендую иметь дело с группой компаний паритет девелопмент. Звоните все расскажу: @dontcheatpeople – телеграмм.

  17. Michaelgax表示:

    rybelsus rybelsus generic rybelsus

  18. Matthewweind表示:

    purchase zithromax z-pak: zithromax 500mg price – zithromax z-pak price without insurance

  19. Robertusany表示:

    Адвокаты Московской коллегии адвокатов «Бастион» имеют немалый опыт работы в различных организациях и учреждениях, в том числе в прокуратуре, органах внутренних дел, судах, службы судебных приставов, министерстве юстиции, исполнительных органах власти, крупных государственных корпорациях, в частных зарубежных и российских компаниях, а также во многих других структурах и организациях.
    адвокат по административным правонарушениям
    цены на услуги адвоката по гражданским делам
    ст 322 3 ук рф с комментариями судебная практика
    решение суда о снятии с регистрационного учета
    прием судей в понедельник и четверг
    административные дела примеры
    стоимость адвоката в арбитражном суде
    мгка бастион
    расценки на услуги адвоката в арбитражном суде
    цены на адвокатские услуги

    Адвокатская контора по сути является Коллегией адвокатов Москвы и Московской области, поскольку объединяет высококвалифицированных адвокатов Москвы и адвокатов Московской области. Юристы нашей группы правовых компаний предоставляют на территории Таганского района в центре Москвы все виды юридических услуг организациям и гражданам.

    На официальном сайте Московской городской коллегии адвокатов “Бастион” Вы можете найти, пожалуй, одних из лучших адвокатов и юристов по любому юридическому вопросу, в том числе по самым сложным делам и судебным спорам.

    В нашей адвокатской фирме работают грамотные и опытные юристы в области уголовного, гражданского, жилищного, семейного, наследственного, семейного, земельного, трудового, страхового, налогового, корпоративного, арбитражного, административного и других отраслей права. Если Вы нуждаетесь в юридической помощи, то здесь Вы можете найти список нужных сайтов .

  20. ClydeOpeda表示:

    Auction house withdraws shrunken heads and other human remains from sale following outcry
    документы для оформления развода
    правовые консультации
    чем отличается кассация от апелляции
    развод без детей и имущества через загс
    апелляционная
    алгоритм расторжения брака
    какие документы нужны для развода в загсе по обоюдному согласию без детей
    юрист сбербанка
    консультант по пособиям на детей
    кассация и апелляция

    An auction house in England has withdrawn human remains, including shrunken heads and ancestral skulls, from sale following an outcry.

    The Swan auction house in Tetsworth, Oxfordshire withdrew more than two dozen lots from an upcoming auction titled “The Curious Collector Sale,” including an 18th-century Tsantsa shrunken head, which was expected to fetch ?20,000-?25,000 ($26,000-$33,000) and was previously owned by Hugh Hefner, founder of Playboy magazine.

    Other withdrawn lots include an ancestral skull from the Solomon Islands, another from the Fon tribe in Benin and a double ancestor skull from Congo.

    The planned sale of another piece, described as a 19th-century horned Naga human skull, drew criticism from Neiphiu Rio, Chief Minister of the Indian state of Nagaland.
    Rio wrote to India’s External Affairs Minister, S. Jaishankar, asking him to intervene “to ensure that the auction of the human remains of our people is halted.”

    In his letter, Rio said he had been informed about the auction by the Forum for Naga Reconciliation (FNR), a grouping of organizations that works to reconcile different Naga political groups, some of which have engaged in armed struggle for independence from India in recent decades.

    In its letter to Rio, the FNR said it “condemns this inhumane and violent practice where indigenous ancestral human remains continue to be collector’s items.”

    “Such auctions continue the policy of dehumanization and colonial violence on the Naga people,” it added.

    Another of those to criticize the planned sale was Laura Van Broekhoven, director of the Pitt Rivers Museum, which is part of the University of Oxford.

    “Please, immediately pull from tomorrow’s auction the human and ancestral remains of Naga, Shuar, Dayak, Kota, Fon, Vili people and other communities in Papua New Guinea, Solomon Islands, Nigeria, Congo, Ecuador, Nagaland, Benin,” she wrote in a post on X on Tuesday.

  21. Gregorystush表示:

    Адвокаты Москвы – Помощь и услуги
    юрист по экономическим преступлениям москва
    дежурная часть советского ровд
    номер телефона дежурной части советского района
    адвокатская компания
    помощь адвоката по арбитражным делам
    юридическая консультация по покупке недвижимости
    адвокат по 228 срочно
    сопровождение сделки купли продажи недвижимости
    сколько стоит консультация юриста в москве средняя цена
    канцелярия советского районного суда телефон

    Адвокаты компании «Первый Иск» обладают высоким уровнем юридической квалификации в разных правовых областях и гарантируют необходимую грамотную поддержку. Ведь по версии независимого рейтинга адвокатов и юридических фирм Москвы, наша компания “Первый иск” занимает ТОП 5 рейтинга!
    Закажите услуги адвоката, имеющего в практике выигранные уголовные дела. Юрист разберет ситуацию и составив стратегию защиты. Гонорар обсуждается и зависит от сложности дела. Гарантировано качественная работа от начала до конца. Действенная помощь адвоката на следствии и в суде.

    Защищаем по этим статьям: взятки, вымогательство, грабеж, ДТП с тяжкими телесными, изнасилование, использование подложного документа, клевета, контрабанда, кража, мошенничество, налоговые преступления, наркотики, организация проституции, причинение вреда здоровью, разбой, растрата, убийство, угроза убийством, фиктивная регистрация, халатность, хулиганство и др.

  22. Dustinemalm表示:

    Московская коллегия адвокатов — юридическая помощь, услуги адвоката в Москве
    дополнительное решение может быть вынесено общим судом в случае неразрешения вопроса
    ленин был адвокатом в молодости
    осуждение ранее судом одного из супругов к лишению свободы на срок более трех лет
    цвсиг артем
    осуждение одного из супругов к лишению свободы на срок более трех лет
    адвокат по уголовным
    центр временного содержания иностранных граждан владимир
    центр временного содержания мигрантов
    заочное решение о разводе когда вступает в силу
    дополнительное решение по гпк

    Без паники! У вас сложилась трудная жизненная ситуация? Возникла проблема в области права? Нужна юридическая помощь? Не паникуйте, мы обязательно поможем вам разобраться! С помощью нашего сайта, вы можете связаться с уголовными адвокатами и юристами Московской коллегии адвокатов или адвокатами в другом городе, получить юридическую консультацию по срочным вопросам, не выходя из дома.

    Помните! Если у вас сложилась трудная или спорная правовая ситуация, если вы понимаете, что не справляетесь сами, лучше как можно раньше обратиться за помощью к адвокату, избежав при этом неблагоприятных последствий. Часто самостоятельно проделанная доверителем работа в дальнейшем мешает работе адвоката над делом.

    Помощь адвоката избавит вас от лишних переживаний, сэкономит ваше время и поможет избежать последующих финансовых затрат. Кроме того, в таких случаях, как уголовное преследование, защита адвоката абсолютно необходима.
    О Коллегии
    Московская коллегия адвокатов — это некоммерческая организация, которая на протяжении длительного времени оказывает квалифицированную юридическую помощь гражданам и организациям. В Московской коллегии адвокатов все специалисты с высшим юридическим образованием; наши адвокаты, при получении статуса, выдержали сложный квалификационный экзамен, имеют внушительный опыт и успешную многолетнюю судебную практику. В коллегии служат как рядовые адвокаты, так и заслуженные, имеющие статус «Почетный адвокат России».

    Каждый адвокат нашей Московской коллегии адвокатов приносил присягу адвоката. Для нас это не просто слова: «Торжественно клянусь честно и добросовестно исполнять обязанности адвоката, защищать права, свободы и интересы доверителей, руководствуясь Конституцией Российской Федерации, законом и кодексом профессиональной этики адвоката».

  23. RobertJah表示:

    Ремонт духовых шкафов осуществляется квалифицированными специалистами с гарантией качества https://remont-dukhovok-spb.ru/

  24. xem thêm表示:

    Excellent article. I’m facing some of these issues as well..

  25. ClementSax表示:

    Адвокаты Москвы
    адвокат москва цены
    защита прав потребителей юрист
    медицинский адвокат
    сколько стоят услуги адвоката
    юридическая консультация бесплатно
    срок для принятия наследства
    помощь юриста бесплатная
    сроки принятия наследства
    адвокат по уголовным делам москва
    консультация адвоката бесплатная

    Мы успешно защищаем права и свободы юридических и физических лиц. Колоссальный и зачастую уникальный опыт, а также высокая квалификация наших сотрудников позволяют нам достигать результата, в максимальной степени отвечающего интересам клиента. Наши специалисты состоят в адвокатской палате которая на сегодняшний день является наиболее авторитетной в России. Благодаря многочленным блистательным победам в громких и, по мнению многих, бесперспективных делах, наши сотрудники снискали уважение не только в РФ, но и за рубежом.
    Если вам нужен адвокат в Москве просто обратитесь к нам и вы получите квалифицированную помощь в решении ваших проблем. Как показывает практика, в большинстве дел, в которых принимали участие наши адвокаты, суд выносил решение в пользу их клиентов. Кроме того, мы осуществляем страхование своей ответственности на 5 млн рублей. Такие гарантии вам не предложит ни одна юридическая компания.

    Стоит отметить, что за все то время, что работает наша компания не было прецедента, когда в результате действий наших специалистов клиенту был бы нанесен ущерб и возникла необходимость в страховой поддержке.

發佈留言

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