AngularJS中的级联表达与ng-show一起使用,但不与ng-if一起使用

时间:2014-05-01 12:01:36

标签: javascript angularjs

如果我使用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>

See in Plunker ng-show

See in Plunker ng-if

更新:有人指出木板中的angularjs lib的版本没有ng-if。现在我已经更新到使用1.2.x这个问题但是没有消失。

1 个答案:

答案 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不会以预期范围为目标,因为从范围的层次结构中的更深范围调用。