# AngularJS改變元素顯示狀態
### 前言
本文描述使用AngularJS提供的ng-show和ng-hide指令實現自動監聽某布爾型變量來改變元素顯示狀態。
控制html元素顯示和隱藏有n種方法:html的hidden、css的display、jquery的hide()和show()、bootstrap的.hide。今天的重點不是顯示和隱藏,而是監聽某個布爾變量值,自動改變元素顯示和隱藏狀態。監聽函數、if判斷、選擇dom、設置dom,5行代碼搞不定吧,而且毫無技術含量。
### 實例1
~~~
<body>
<div ng-controller="VisibleController">
<p ng-show="visible">字符串1</p>
<p ng-hide="visible">字符串2</p>
<button ng-click="toggle()">切換</button>
</div>
<script src="../lib/angularjs/1.2.26/angular.min.js"></script>
<script>
function VisibleController($scope) {
$scope.visible = false;
$scope.toggle = function () {
$scope.visible = !$scope.visible;
}
}
</script>
</body>
~~~
兩個指令很簡單,只是ng-show在true時顯示,false時隱藏,而ng-hide效果相反。
對于菜單、上下文敏感的工具以及很多其他情況來說,顯示和隱藏元素是一項核心的功能。與Angualr中其他功能一樣,Angular是通過修改數據模型的方式來驅動UI刷新,然后通過指令把變更反應到UI上。
ng-show和ng-hide這兩條指令的功能是等價的,但是運行效果正好相反,我們都可以根據所傳遞的表達式來顯示或隱藏元素。也就是說,ng-show在表達式為true時將會顯示元素,為false時將會隱藏元素;而ng-hide則恰好相反。
### 工作原理
這兩條指令的工作原理是:根據實際情況把元素的樣式設置為display:block來顯示元素;設置為display:none來隱藏元素。
### 實例2
~~~
<body ng-controller='ShowController'>
<button ng-click="toggleMenu()">Toggle Menu</button>
<ul ng-show='menuState.show'>
<li>Stun</li>
<li>Disintegrate</li>
<li>Erase from history</li>
</ul>
<script src="lib/angular/angular.js"></script>
<script>
var myApp=angular.module('myApp',[]) myApp.controller('ShowController',function($scope) {$scope.menuState={show: false},$scope.toggleMenu=function() {$scope.menuState.show=!$scope.menuState.show;}});
</script>
</body>
~~~
- 前言
- (一)深入理解ANGULARUI路由_UI-ROUTER
- (二)AngularJS路由問題解決
- (四)ANGULAR.JS實現下拉菜單單選
- (五)Angular實現下拉菜單多選
- (六)AngularJS+BootStrap實現彈出對話框
- (七)實現根據不同條件顯示不同控件
- (十)AngularJS改變元素顯示狀態
- (十四)AngularJS靈異代碼事件
- (十七)在AngularJS應用中實現微信認證授權遇到的坑
- (十八)在AngularJS應用中集成科大訊飛語音輸入功能
- (十九)在AngularJS應用中集成百度地圖實現定位功能
- (二十一)Angularjs中scope與rootscope區別及聯系
- (二十三)ANGULAR三宗罪之版本陷阱
- (二十四)AngularJS與單選框及多選框的雙向動態綁定
- (二十五)JS實現導入文件功能
- (二十七)實現二維碼信息的集成思路
- (二十八)解決AngualrJS頁面刷新導致異常顯示問題
- (二十九)AngularJS項目開發技巧之localStorage存儲
- (三十)AngularJS項目開發技巧之圖片預加載
- (三十一)AngularJS項目開發技巧之獲取模態對話框中的組件ID
- (三十二)書海拾貝之特殊的ng-src和ng-href
- (三十三)書海拾貝之簡介AngularJS中使用factory和service的方法
- (三十四)Angular數據更新不及時問題探討
- (三十六)AngularJS項目開發技巧之利用Service&Promise&Resolve解決圖片預加載問題(后記)