Javascript 为什么ng show与ng repeat一起工作,而ng if不与';T
我有一个简单的ng重复,只显示一半的项目。出于某种原因,我让它与ng show合作,但不是与ng if合作。我不明白为什么 这项工作:Javascript 为什么ng show与ng repeat一起工作,而ng if不与';T,javascript,angularjs,Javascript,Angularjs,我有一个简单的ng重复,只显示一半的项目。出于某种原因,我让它与ng show合作,但不是与ng if合作。我不明白为什么 这项工作: <li ng-repeat="item in items" ng-show="$index < items.length / 2">{{item}}</li> {{item} 这并不是: <li ng-repeat="item in items" ng-if="$index < items.length / 2"
<li ng-repeat="item in items" ng-show="$index < items.length / 2">{{item}}</li>
{{item}
这并不是:
<li ng-repeat="item in items" ng-if="$index < items.length / 2">{{item}}</li>
{{item}
下面是一个要演示的JSFIDLE:
这个问题:没有提供一个答案,为什么ng show可以工作,而ng if不能工作,我猜这是因为Angular的优先级渲染周期。他们可能已经改变了它的行为与更新的版本,如有人张贴在上面。 在像您这样的情况下,我通常为ngRepeat制作一个自定义过滤器,以对数组进行切片,并根据偏移量(ngRepeat分页)仅显示指定数量的项。我从来没有把
ngRepeat
直接与ngIf
或ngShow/Hide
一起使用搞砸过,因为无论你用哪种方式,它都会被真正的窃听
指令创建并附加新的节点元素ngRepeat
将允许angular生成一个元素,但之后它会将其显示设置为ngShow
none
不允许angular生成元素ngIf
ngIf
比ngRepeat
具有更高的优先级,因此我可以假设字段下面发生的事情是:
- 角度可以看到阵列
- ngIf不知道$index是什么(因为它是
的一部分),所以它的循环就这样运行ngRepeat
- ngRepeat渲染元素
ngShow
工作时:
- 角度可以看到阵列
- ngRepeat渲染元素
- ngShow按指定条件显示它们
可能相关:尝试使用angular 1.01的更高版本,并使用有效的html<代码>不是
的有效子版本,通过更新角度版本解决了这个问题:虽然我们有机会发言,但你到底为什么要更新这个JSFIDLE 17269次!?除非您想将小提琴与其当前状态共享,否则不要单击“更新”。运行已足够更新小提琴。现在就可以!谢谢所有的回复!