AngularJS ngIf
示例
ng-if是类似于的指令,ng-show但从DOM中插入或删除元素而不是简单地将其隐藏。Angular1.1.5引入了ng-If指令。您可以使用1.1.5以上版本的ng-if指令。这很有用,因为Angular不会处理已删除元素内部的摘要,ng-if从而减少了Angular的工作量,尤其是对于复杂的数据绑定。
不同于ng-show,ng-if伪指令创建一个使用原型继承的子范围。这意味着在子范围上设置原始值将不适用于父范围。要在父作用域上设置原语$parent,必须使用子作用域上的属性。
的JavaScript
angular.module('MyApp', []); angular.module('MyApp').controller('myController', ['$scope', '$window', function myController($scope, $window) { $scope.currentUser= $window.localStorage.getItem('userName'); }]);
视图
<div ng-controller="myController"> <div ng-if="currentUser"> Hello, {{currentUser}} </div> <div ng-if="!currentUser"> <a href="/login">Log In</a> <a href="/register">Register</a> </div> </div>
DOMIfcurrentUser不是未定义的
<div ng-controller="myController"> <div ng-if="currentUser"> Hello, {{currentUser}} </div> <!-- ng-if: !currentUser --> </div>
DOM如果currentUser未定义
<div ng-controller="myController"> <!-- ng-if: currentUser --> <div ng-if="!currentUser"> <a href="/login">Log In</a> <a href="/register">Register</a> </div> </div>
工作实例
功能承诺
ngIf指令也接受函数,逻辑上要求返回true或false。
<div ng-if="myFunction()"> <span>Span text</span> </div>
仅当函数返回true时,才会显示跨度文本。
$scope.myFunction = function() { var result = false; //确定结果的布尔值的代码 return result; };
作为任何Angular表达式,函数都可以接受任何类型的变量。