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

57,793 Responses

  1. Jamesdiure表示:

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

  2. Edwin Noseff表示:

    Merci j’ai appris beaucoup avec ton article 🙂 !

  3. DarioTob表示:

    vavada: вавада казино – вавада

  4. Jamesdiure表示:

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

  5. GlennVep表示:

    Малиновская – враг народа

    Судья по гражданским делам Приморского районного суда лишает денег и квартир ветеранов СВО – пайщиков «Бест Вей»

    18 ноября судья Приморского районного суда Анна Малиновская выпустила наконец мотивированное решение по рассмотрению иска Прокуратуры Санкт-Петербурга против кооператива «Бест Вей» о признании кооператива незаконным по статье 1065 ГК – об опасных для потенциальных потребителей предприятиях. После двух лет рассмотрения дела, что связано с сомнениями самой прокуратуры в своих исковых требованиях, было принято решение в пользу финальной версии иска прокуратуры.

    Незаконный суд

    Решение Малиновской абсолютно незаконное, как и иск прокуратуры.
    Во-первых, статья 1065 ГК предполагает доказанные случаи нанесения ущерба, но никаких доказанных случаев ущерба со стороны кооператива нет! Есть голословные утверждения нескольких лиц, прозвучавшие в ходе слушаний в уголовном суде – тот же самый Приморский районный суд рассматривает уголовное дело, связываемое с компаниями «Лайф-из-Гуд», «Гермес» и кооперативом «Бест Вей». Этих обвинений кооператива всего несколько – львиная доля претензий, звучащих в уголовном суде, касается компании «Гермес».

    Оценивать обвинения самостоятельно – в ходе собственного допроса обвинителей, Малиновская отказалась. Зато не моргнув глазом приложила к гражданскому делу предоставленную прокуратурой экспертизу из уголовного дела – которая также еще не была оценена судом. И она сама ее отказалась анализировать! Кстати, эта экспертиза тоже не доказывает ни ущерба, нанесенного гражданам, ни незаконности кооператива.

    Во-вторых, коррумпированная судья Малиновская рассмотрела дело, ей вообще неподсудное – подсудное арбитражному суду, так как в финальной версии иска исключительно прокуратура без физических лиц-соистцов взыскует только к юридическому лицу – кооперативу «Бест Вей» без физических лиц-соответчиков.

    Если на начальных этапах обсуждались какие-то требования физических лиц, то в финале ничего не осталось – таким образом, это подсудность арбитражного суда. Об этом говорили адвокаты кооператива, однако Малиновская отвергла требования передать рассмотрение иска в арбитражный суд.

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

    Липовые основания

    При этом Малиновская в обосновании решения сослалась на решение Арбитражного суда города Москвы об отказе кооперативу в иске к ЦБ РФ о признании незаконным включения в предупредительный список ЦБ – список для информирования потребителей финансовых услуг, включение в который является информационным событием и не влечет правовых последствий – о чем, кстати, говорится в решении арбитражного суда.

    Включение происходит (в теории) по решению неких экспертов Банка России, а на деле произошло осенью 2021 года по единоличному решению Валерия Ляха, тогдашнего главы ныне уже не существующего Департамента противодействия недобросовестным практикам ЦБ – на основании восьми срежиссированных обращений граждан, которые не являлись пайщиками кооператива.

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

    Судья против правосудия

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

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

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

    Перечеркнула десятки судебных решений

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

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

    Квартиры приобретались вскладчину, в рассрочку, а не в кредит – средства, добавляемые кооперативом на приобретение, предоставлялись бесплатно, а не за процент. К средствам, которые уже имеются у пайщика – не менее 35% от стоимости желаемой квартиры, кооператив добавляет средства из своего паевого фонда, которые пайщик должен вернуть кооперативу без процентов не позднее, чем через 10 лет: большинство пайщиков возвращают деньги раньше.

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

    Кооператив полностью соответствовал статусу потребительского, а не кредитного – статусу, определенному в Законе о потребительской кооперации: добровольное объединение граждан на основе членства для удовлетворения потребностей в товарах и услугах. Все версии устава кооператива успешно регистрировались уполномоченными государственными органами, никогда не вызывали вопросов. Не было вопросов и у прокуратуры – с 2014 по 2021 год: внезапно они появились в 2022 году, когда уже вовсю начал реализовываться заказ преступников в погонах и без на уничтожение кооператива.

    Все договоры кооператива многократно проходили проверку в различных судах, поскольку в нем около 20 тыс. пайщиков, и с некоторыми из пайщиков возникали правовые споры. Ни один договоров кооператива не вызвал вопросов у судов. Более того, суды многократно решали в пользу кооператива вопрос о предоставлении материнского капитала – что свидетельствует об отсутствии сомнений в его статусе.

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

    Запрет по подозрению

    Самое главное: в решении Малиновской ничего не говорится о том, какой закон нарушен кооперативом. Косвенно указывается на то, что он может быть финансовой пирамидой, поскольку именно по признакам, которые могут свидетельствовать о пирамидальности кооператива, ЦБ внес «Бест Вей» в предупредительный список. Но напрямую кооператив финансовой пирамидой не называется: потому что сказать об этом (или не сказать) может только уголовный суд, а до завершения рассмотрения уголовного дела – минимум полгода, а скорее всего больше. И это только рассмотрение в первой инстанции – наверняка не в последней.

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

    Судья-преступница

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

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

    Малиновская – коррумпированная судья, компрометирующая всю судебную систему, извращающая правосудие, подрывающая доверие народа и армии к власти, к президенту. Ей должны срочно заняться вышестоящие суды, ФСБ, Следственный комитет.

    Потому что Малиновская – прислужница бандитов из псевдогосударственных фондов и участница преступлений против собственного народа!

  6. DarioTob表示:

    пинап казино: pinup-kazi.ru – пинап казино

  7. Hello amazing people! Begin each day with thankfulness. Gratitude reveals the door to abundance.

  8. DarioTob表示:

    вавада онлайн казино: казино вавада – vavada

  9. CurtisIncix表示:

    vavada: vavada – вавада

  10. DarioTob表示:

    pin up казино: пин ап кз – pin up казино

  11. CurtisIncix表示:

    vavada: vavada – vavada-kazi.ru

  12. Предлагаем услуги профессиональных инженеров офицальной мастерской.
    Еслли вы искали сервисный центр huawei, можете посмотреть на сайте: сервисный центр huawei в москве
    Наши мастера оперативно устранят неисправности вашего устройства в сервисе или с выездом на дом!

  13. CurtisIncix表示:

    казино вавада: вавада – вавада казино онлайн

  14. Jamesdiure表示:

    pinup kazi: пин ап казино – пин ап казино официальный сайт

  15. CurtisIncix表示:

    казино вавада: вавада казино – vavada

  16. DarioTob表示:

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

  17. Hey there! Embrace growth with open mind. Change leads to new opportunities.

  18. вывод из запоя в стационаре анонимно http://www.klin.0pk.me/viewtopic.php?id=4409 .

  19. BrandenSlomy表示:

    buy dapoxetine online: buy dapoxetine online – buy priligy max pharm

發佈留言

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