查看Mastering Web Application Development in Angular,如果表达式为ng-if
,我尝试使用<div>
指令不显示false
。
HTML
<div ng-controller="MyCtrl">
<div ng-if="showSecret">Secret</div>
</div>
的JavaScript
var myModule = angular.module('myApp', []);
function MyCtrl($scope) {
$scope.showSecret = (function() {
return false;
})();
}
但是,看着这个JsFiddle(http://jsfiddle.net/64GCp/2/),我看到Secret
被渲染了。为什么呢?
答案 0 :(得分:3)
答案 1 :(得分:0)
隐藏和显示的选项包括ng-show
或ng-hide
及更高版本Angularjs 1.2.0 + ngIf
所有指令都在DOM上执行,因此 ngShow 或 ngIf 将同等执行。
我个人在页面中亲自使用过 ngShow (我决定使用“大数字”来强调歧义)并在包括IE8在内的所有浏览器中对其进行测试而没有任何问题。
本书可能指的是页面的大小不会改变,因为所有ngShow / ngHide都是隐藏元素:
ng-show输出
<div ng-show="showSecret" style="display: none;">Secret</div>
虽然ngIf只发表评论:
ng-if output
<!-- ngIf: checked -->
重要提示:添加ng-if的第一个稳定版本是角度1.2.0,确保您在使用此版本之前拥有此版本或更高版本。
请理解2件事,Angular正在迅速改变框架,浏览器也是一个很好的做法,搜索基准/版本来确认或丢弃功能。指令的内部功能也可能随着时间的推移而改变。例如,Angular团队宣布他们在版本2.0中放弃了IE8支持。
答案 2 :(得分:0)
您使用的角度版本不支持ng-if。使用较新的版本。请参阅我的小提琴://jsfiddle.net/SdYH5/