AngularJS標(biāo)簽頁tab選項(xiàng)卡切換功能經(jīng)典實(shí)例詳解
本文實(shí)例講述了AngularJS實(shí)現(xiàn)標(biāo)簽頁tab選項(xiàng)卡功能。分享給大家供大家參考,具體如下:
選項(xiàng)卡一:
JavaScript+html+css
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>www.dbjr.com.cn js標(biāo)簽頁tab切換</title>
<style>
#div1 .active{
background:blue;
}
#div1 div{
width:200px;
height:200px;
background:gray;
border:1px solid black;
display:none;
}
</style>
<script>
window.onload=function (){
var oDiv=document.getElementById('div1');
var aBtn=oDiv.getElementsByTagName('input');
var aDiv=oDiv.getElementsByTagName('div');
for(var i=0;i<aBtn.length;i++){ //遍歷div1中的按鈕
aBtn[i].index=i; //給aBth[]添加自定義屬性
aBtn[i].onclick=function (){
for(var i=0;i<aBtn.length;i++){ //遍歷按鈕,將class清除
aBtn[i].className='';
aDiv[i].style.display='none';
}
this.className='active';
aDiv[this.index].style.display='block';
}
}
}
</script>
</head>
<body>
<div id="div1">
<input class="active" type="button" value="選項(xiàng)1" />
<input type="button" value="選項(xiàng)2" />
<input type="button" value="選項(xiàng)3" />
<input type="button" value="選項(xiàng)4" />
<div style="display:block;">111</div>
<div>222</div>
<div>333</div>
<div>444</div>
</div>
</body>
</html>
運(yùn)行效果(直接在http://tools.jb51.net/code/HtmlJsRun上測(cè)試運(yùn)行):

選項(xiàng)卡二:
angularjs指令:
ng-class、ng-click、ng-if
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>www.dbjr.com.cn AngularJS標(biāo)簽頁tab切換</title>
<style>
.active {
background-color: orange;
}
</style>
<script src="http://apps.bdimg.com/libs/angular.js/1.4.6/angular.min.js"></script>
</head>
<body ng-app="s1.app">
<div>
<button ng-class="{ 'active' : data.current == 1 }" ng-click="actions.setCurrent(1)">張三</button>
<button ng-class="{ 'active' : data.current == 2 }" ng-click="actions.setCurrent(2)">李四</button>
<button ng-class="{ 'active' : data.current == 3 }" ng-click="actions.setCurrent(3)">王五</button>
</div>
<div>
<div ng-if="data.current == 1">張三的個(gè)人信息</div>
<div ng-if="data.current == 2">李四的個(gè)人信息</div>
<div ng-if="data.current == 3">王五的個(gè)人信息</div>
<script>
var app = angular.module('s1.app', []);
app.run(function ($rootScope) {
$rootScope.data = {
current: "1" // 1代表張三,2代表李四,3代表王五
};
$rootScope.actions =
{
setCurrent: function (param) {
$rootScope.data.current = param;
}
}
})
</script>
</div>
</body>
</html>
運(yùn)行效果(直接在http://tools.jb51.net/code/HtmlJsRun上測(cè)試運(yùn)行):

選項(xiàng)卡三:
angularjs 指令:
ng-class、ng-click、ng-show
<!DOCTYPE html>
<html ng-app="myApp">
<head lang="en">
<meta charset="UTF-8">
<title>www.dbjr.com.cn AngularJS標(biāo)簽頁tab切換</title>
<script src="http://apps.bdimg.com/libs/angular.js/1.4.6/angular.min.js"></script>
</head>
<body>
<section ng-controller="myCtrl as panel">
<ul>
<li ng-class="{active:panel.isSelected(1)}">
<a href ng-click="panel.selectTab(1)">1111111111</a>
</li>
<li ng-class="{active:panel.isSelected(2)}">
<a href ng-click="panel.selectTab(2)">2222222222</a>
</li>
<li ng-class="{active:panel.isSelected(3)}">
<a href ng-click="panel.selectTab(3)">33333333333</a>
</li>
</ul>
<!--是否點(diǎn)擊-->
{{panel.isSelected(1)}}
{{panel.isSelected(2)}}
{{panel.isSelected(3)}}
<div class="panel" ng-show="panel.isSelected(1)">
<h1>我是1111111111111111111111</h1>
</div>
<div class="panel" ng-show="panel.isSelected(2)">
<h1>我是22222222222222222</h1>
</div>
<div class="panel" ng-show="panel.isSelected(3)">
<h1>我是3333333333333333333333</h1>
</div>
</section>
<script>
var app = angular.module("myApp", []);
app.controller("myCtrl", function () {
this.tab = 2;/*設(shè)置默認(rèn)*/
this.selectTab = function (setTab) {/*設(shè)置tab點(diǎn)擊事件*/
this.tab = setTab;
};
this.isSelected = function (checkedTab) {/*頁面的切換*/
return this.tab === checkedTab;
}
});
</script>
</body>
</html>
運(yùn)行效果(直接在http://tools.jb51.net/code/HtmlJsRun上測(cè)試運(yùn)行):

選項(xiàng)卡四:
angularjs 指令
第二種和第三種方式來源于下面代碼的改進(jìn),產(chǎn)生的效果都是一樣的。
<!DOCTYPE html>
<html ng-app="myApp">
<head lang="en">
<meta charset="UTF-8">
<title>www.dbjr.com.cn AngularJS標(biāo)簽頁tab切換</title>
<script src="http://apps.bdimg.com/libs/angular.js/1.4.6/angular.min.js"></script>
</head>
<body>
<section ng-init="tab=3">
<ul>
<li ng-class="{active:tab===1}">
<a href ng-click="tab=1">1111111111</a>
</li>
<li ng-class="{active:tab===2}">
<a href ng-click="tab=2">2222222222</a>
</li>
<li ng-class="{active:tab===3}">
<a href ng-click="tab=3">33333333333</a>
</li>
</ul>
<!--是否點(diǎn)擊-->
{{tab===1}}
{{tab===2}}
{{tab===3}}
<div class="panel" ng-show="tab===1">
<h1>我是1111111111111111111111</h1>
</div>
<div class="panel" ng-show="tab===2">
<h1>我是22222222222222222</h1>
</div>
<div class="panel" ng-if="tab===3">
<h1>我是3333333333333333333333</h1>
</div>
</section>
<script>
var app = angular.module("myApp", []);
app.controller("myCtrl", function () {
});
</script>
</body>
</html>
運(yùn)行效果(直接在http://tools.jb51.net/code/HtmlJsRun上測(cè)試運(yùn)行):

但ng-show和ng-if是有區(qū)別的
第一點(diǎn)區(qū)別是,
ng-if 在后面表達(dá)式為 true 的時(shí)候才創(chuàng)建這個(gè) dom 節(jié)點(diǎn),
ng-show 是初始時(shí)就創(chuàng)建了,用display:block 和 display:none 來控制顯示和不顯示。
第二點(diǎn)區(qū)別是,
ng-if 會(huì)(隱式地)產(chǎn)生新作用域,ng-switch 、 ng-include 等會(huì)動(dòng)態(tài)創(chuàng)建一塊界面的也是如此。
這樣會(huì)導(dǎo)致,在 ng-if 中用基本變量綁定 ng-model,并在外層 div 中把此 model 綁定給另一個(gè)顯示區(qū)域,內(nèi)層改變時(shí),外層不會(huì)同步改變,因?yàn)榇藭r(shí)已經(jīng)是兩個(gè)變量了。
<p>{{name}}</p>
<div ng-if="true">
<input type="text" ng-model="name">
</div>
ng-show 不存在此問題,因?yàn)樗蛔詭б患?jí)作用域。
避免這類問題出現(xiàn)的辦法是,始終將頁面中的元素綁定到對(duì)象的屬性(data.x)而不是直接綁定到基本變量(x)上。AngularJS中的作用域
參考:
優(yōu)酷視頻:AngularJS 入門教程(2.2):學(xué)做標(biāo)簽頁
更多關(guān)于AngularJS相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《AngularJS指令操作技巧總結(jié)》、《AngularJS入門與進(jìn)階教程》及《AngularJS MVC架構(gòu)總結(jié)》
希望本文所述對(duì)大家AngularJS程序設(shè)計(jì)有所幫助。
- AngularJS實(shí)現(xiàn)動(dòng)態(tài)切換樣式的方法分析
- 詳解AngularJS ng-class樣式切換
- angularJs的ng-class切換class
- 使用AngularJS2中的指令實(shí)現(xiàn)按鈕的切換效果
- AngularJS路由切換實(shí)現(xiàn)方法分析
- AngularJS實(shí)現(xiàn)使用路由切換視圖的方法
- AngularJS入門教程之多視圖切換用法示例
- 用AngularJS的指令實(shí)現(xiàn)tabs切換效果
- 使用AngularJS實(shí)現(xiàn)可伸縮的頁面切換的方法
- angularjs實(shí)現(xiàn)Tab欄切換效果
相關(guān)文章
angular6的響應(yīng)式表單的實(shí)現(xiàn)
這篇文章主要介紹了angular6的響應(yīng)式表單的實(shí)現(xiàn),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-10-10
Angularjs實(shí)現(xiàn)帶查找篩選功能的select下拉框示例代碼
這篇文章主要介紹了Angularjs實(shí)現(xiàn)帶查找篩選功能的select下拉框的詳細(xì)過程及示例代碼,文中通過示例介紹的很詳細(xì),相信會(huì)對(duì)大家學(xué)習(xí)使用Angularjs具有一定的參考借鑒價(jià)值,有需要的朋友們可以一起來看看。2016-10-10
AngularJS equal比較對(duì)象實(shí)例詳解
這篇文章主要介紹了AngularJS API之equal比較對(duì)象的相關(guān)資料,需要的朋友可以參考下2016-09-09

