如果我使用ng-show
显示部分但未使用所需的ng-if
<div ng-controller="nullController">
<button ng-click="p = 1">click to reveal next</button>
</div>
<div ng-show="$$prevSibling.p == 1" ng-controller="nullController">
<div>Appears based on previous sibling state</div>
<button ng-click="p = 1">click to reveal next</button>
</div>
<div ng-show="$$prevSibling.p == 1" ng-controller="nullController">
<div>Appears based on previous sibling state</div>
<button ng-click="p = 1">click to reveal next</button>
</div>
更新:有人指出木板中的angularjs lib的版本没有ng-if。现在我已经更新到使用1.2.x这个问题但是没有消失。
答案 0 :(得分:3)
您正在使用angularjs 1.0.1 !
ng-if
在旧版本中尚不存在。
只有版本 1.1.5以上才能处理ng-if
指令。
你真的应该为你的plunkr选择这个版本(最新的稳定版本):
<script data-require="angular.js@1.2.16" data-semver="1.2.16" src="https://code.angularjs.org/1.2.16/angular.js"></script>
Here这是一个更正式的数据,显示自{1.1}以来ngIf
可用。
此外,请注意ngIf
创建一个新的子范围。
实际上,它需要这种机制才能从DOM中实现组件的删除。
ng-show
不需要它,因为它只是隐藏内容。
因此,$$prevSibling
不会以预期范围为目标,因为从范围的层次结构中的更深范围调用。