写点什么

AngularJS 进阶 (十)AngularJS 改变元素显示状态

  • 2022-12-02
    江苏
  • 本文字数:927 字

    阅读完需:约 3 分钟

AngularJS进阶(十)AngularJS改变元素显示状态

​​一、前言

本文描述使用 AngularJS 提供的 ng-show 和 ng-hide 指令实现自动监听某布尔型变量来改变元素显示状态。

控制 html 元素显示和隐藏有 n 种方法:html 的 hidden、css 的 display、jquery 的 hide()和 show()、bootstrap 的.hide。今天的重点不是显示和隐藏,而是监听某个布尔变量值,自动改变元素显示和隐藏状态。监听函数、if 判断、选择 dom、设置 dom,5 行代码搞不定吧,而且毫无技术含量。

二、实例

<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-showng-hide这两条指令的功能是等价的,但是运行效果正好相反,我们都可以根据所传递的表达式来显示或隐藏元素。也就是说,ng-show在表达式为 true 时将会显示元素,为 false 时将会隐藏元素;而 ng-hide 则恰好相反。

三、工作原理

这两条指令的工作原理是:根据实际情况把元素的样式设置为display:block来显示元素;设置为display:none来隐藏元素。

<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>
复制代码


发布于: 刚刚阅读数: 4
用户头像

No Silver Bullet 2021-07-09 加入

岂曰无衣 与子同袍

评论

发布
暂无评论
AngularJS进阶(十)AngularJS改变元素显示状态_AngularJS_No Silver Bullet_InfoQ写作社区