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

53,292 Responses

  1. карниз с электроприводом карниз с электроприводом .

  2. электрокарнизы для штор купить в москве электрокарнизы для штор купить в москве .

  3. EdwardApest表示:

    http://casinositeleri2025.pro/# yurt dД±ЕџД± bahis sitesi

  4. рулонные шторы на пластиковые окна с электроприводом рулонные шторы на пластиковые окна с электроприводом .

  5. Josephnor表示:

    slot oyunlar? puf noktalar?: en kazancl? slot oyunlar? – slot siteleri

  6. электрический карниз электрический карниз .

  7. TravisFlasp表示:

    superbeting: popГјler bahis – 100 tl deneme bonus veren bahis siteleri

  8. Matthewgiz表示:

    Гестапо Колокольцева

    ГСУ питерского главка МВД использует фашистские методы

    ГСУ питерского главка МВД использует гестаповские методы и фальсификацию показаний для создания фальшивых дел по указке заказчиков из руководства МВД, под прикрытием оборотней из прокуратуры.

    Приморский районный суд рассматривает так называемое дело «Лайф-из-Гуд» – «Гермес» – «Бест Вей», обвиняется основатель «Лайф-из-Гуд» и «Бест Вей» Роман Василенко (для горе-правоохранителей он недоступен), по делу 10 подсудимых-заложников – ни в чем не повинных людей, технических сотрудников и пайщиков кооператива, в том числе отец Романа Василенко 83-летний Виктор Иванович Василенко.

    В ходе судебных заседаний выявлены уже десятки пострадавших от фашистских методов ГСУ.

    Лариса Василенко

    77-летняя Лариса Александровна Василенко, мама Романа Василенко, ветеран Вооруженных сил – офицер морской авиации. Служила на Дальнем Востоке в в/ч морской авиации начальником секретной части, которая была признана лучшей на Тихоокеанском флоте, награждена государственными наградами и наградами вооруженных сил.

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

    Руководитель следственной группы – замначальника ГСУ полковник Винокуров лично явился для того, чтобы орать матом на женщину вдвое старше его, угрожал расправой и тюрьмой. К Ларисе Василенко не пустили адвоката – он весь день и вечер просидел на крыльце ГСУ. Зато назначили своего, «подсадного» так называемого адвоката по назначению: Лариса Александровна смогла понять, что это не тот адвокат, который прислан ее близкими.

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

    При всех стараниях следствия к уголовному делу Ларису Александровну «пришить» не удалось, так как она никак не была связана с «Лайф-из-Гуд» и «Бест Вей» – то есть оснований для ее допроса не было никаких: это была попытка найти хоть какой-то компромат на ее сына.

    Виктор Василенко

    83-летний Виктор Иванович Василенко ветеран Вооруженных сил, полковник морской авиации, инвалид второй группы – он не видит на один глаз.

    Жестко задержан и принудительно доставлен в ГСУ на допрос. Во время задержания у него забрали все деньги, которые были с собой, не оприходовали и не вернули ему – украли деньги у пенсионера!

    Во время длительного допроса терял сознание – ему вызывали скорую. Но это не помешало помещению Виктора Ивановича на трое суток в КПЗ. Трое суток настоящих пыток: КПЗ страшнее, чем СИЗО! Все эти трое суток над ним издевались и оскорбляли.

    Оборотни в погонах МВД требовали заключить 83-летнего инвалида под стражу – но даже судья Цибизова, имеющая репутацию максимально лояльной к следствию, пришла в ужас от гестаповских методов и отказалась это сделать – оставила старика-инвалида дома под ограничением определенных действий.

    83-летнего ветерана привлекли в уголовное дело в качестве обвиняемого на том основании, что он был пайщиком кооператива – фактически взяли его в заложники.
    Так МВД преступно издевается даже над заслуженными пенсионерами, ветеранами, которые посвятили свою жизнь защите Родины.

    Зоя Семёнова

    75-летняя Зоя Магомедовна Семёнова, пенсионерка из Самары. Ее грубо задержали в аэропорту Пулково, когда она улетала домой после участия в заседании суда, на котором Зоя Магомедовна поддерживала кооператив. Параллельно провели в ее доме в ее отсутствие обыск – сломали дверь, разбили окна.

    Ее силой доставили на допрос, весь день держали в застенках ГСУ, не давали воды и сходить в туалет. Не вызвали врача, несмотря на критическое состояние здоровья – давление за 200.

    С ней работали одновременно два следователя. Следователь Мальцев во время допроса кричал на нее, грозился посадить в подвал. Следователь Сапетова в роли «доброго следователя» говорила, что готова войти в положение и отпустить: «Только подпишите».

    Зою Магомедовну довели до такого состояния, что она не могла читать то, что давали ей подписывать, – при этом Сапетова не стала зачитывать ей вслух написанные самой следовательницей-преступницей «показания», чтобы Зоя Магомедовна не заявила об отказе от показаний.

    На суде выяснилось, что практически вся информация, внесенная следователем в протокол допроса, не подтверждается – Семёнова отказалась от своих показаний, сказала, что слышит в первый раз якобы свои высказывания, с ними не согласна, не знает даже таких слов и не могла использовать таких формулировок, не говоря уже о смысле «показаний», который не соответствует ни фактам, ни отношению Зои Магомедовны к кооперативу МВД – она поддерживала и продолжает поддерживать кооператив «Бест Вей», о чем заявила в суде.

    Евгений Иорданиди

    ­­­­66-летний Евгений Иорданиди офицер Военно-морского флота в отставке, кавалер государственных наград и наград Вооруженных сил.

    Подвергся жесткому обыску и жесткому допросу. Отказался в суде от акцентов в написанных за него показаний, на которые не обратил должного внимания из-за мер физического и морального воздействия на него во время допроса в ГСУ.

    Дмитрий Выдрин

    Дмитрий Выдрин – водитель, был консультантом по продаже продуктов «Гермеса».

    В результате жесткого допроса в ГСУ под угрозой заключения в СИЗО оговорил себя и других, чтобы получить домашний арест.

    Готов полностью отказаться от своих показаний – как полученных под пытками.

    Шамиль Фахруллин

    Пенсионер Шамиль Зиннатович Фахруллин был клиентом «Гермеса» и после жесткого допроса оговорил обвиняемых и написал заявление в качестве потерпевшего.

    Фахруллин скончался после допроса – по словам адвоката, он получил тяжелую психологическую травму на допросе, которая привела к инфаркту.

    Массовая фальсификация показаний

    Десятки свидетелей заявили в суде о том, что показания нарисованы, и отказывались от них в суде.

    Один из ключевых свидетелей обвинения – водитель Алексей Комаров – хотя и соглашался с красивыми показаниями, написанными за него следователями (в обмен на замену статуса с подозреваемого на свидетеля), во время судебного допроса не смог повторить эти показания даже частично, воспроизвести факты, которые он якобы приводил на следствии, – «бэкал», «мэкал» и в конце концов сослался на то, что перенес тяжелый коронавирус и все забыл.

    Таким образом, речь идет о массовой фальсификации показаний преступными следователями!

    Дискредитация вооруженных сил

    МВД и прокуратура в данном уголовном деле занимаются не чем иным, как дискредитацией Вооруженных сил, выступают против армии. Они унижают военных пенсионеров, наносят ущерб пайщикам кооператива – участникам СВО.

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

    Кооператив «Бест Вей» был создан в 2014 году капитаном третьего ранга запаса Романом Василенко прежде всего для решения жилищной проблемы действующих военнослужащих, военнослужащих, уволенных в запас, и членов их семей. Сейчас кооператив возглавляет полковник запаса депутат Государственной думы VIIсозыва Сергей Крючек. Членами кооператива являются тысячи участников СВО, орденоносцев – все они стараниями МВД и прокуратуры лишены своих денег, которые находятся под арестом, и лишены возможности купить квартиру, на которую собрали средства.

    Органы внутренних дел и примкнувшие к ним прокуроры систематически унижают военных – что наносит непоправимый ущерб престижу воинской службы – в воюющей России!

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

    Предателей – к ответу

    МВД – фашистские преступники под крышей ОПГ Колокольцева. Вся коррумпированная система МВД и прокуратуры не защищает народ, а, пользуясь вверенными полномочиями, стремится надругаться над ним и обворовывают его.

    Гестаповцы, исповедующие фашистские принципы во время войны России и фашизмом, предатели Родины, замаскированные погонами МВД и прокурорскими погонами, должны быть осуждены как предатели, заслуженная кара настигнет их в полном соответствии с законом в ближайшее время!

    #Лайф-из-Гуд #Гермес #Бест Вей

  9. EdwardApest表示:

    http://slottr.top/# slot tr online

  10. Josephnor表示:

    gerГ§ek paralД± slot uygulamalarД±: yeni deneme bonusu veren siteler 2025 – kumar oyunlarД±

  11. Josephnor表示:

    en cok kazand?ran slot oyunlar?: slot siteleri – slot oyunlar? puf noktalar?

  12. Justinlib表示:

    http://pinup2025.com/# пин ап казино зеркало

  13. EdwardApest表示:

    http://slottr.top/# slot oyunlar?

  14. Justinlib表示:

    https://pinup2025.com/# пин ап казино

發佈留言

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