AngularJS:不要在 DOM 更改时运行 ng-repeat
Posted
技术标签:
【中文标题】AngularJS:不要在 DOM 更改时运行 ng-repeat【英文标题】:AngularJS: Don't run ng-repeat on DOM change 【发布时间】:2017-06-07 17:08:11 【问题描述】:我遇到了以下问题:
我有一个带有 AngularJS 1.6.1 的 SPA,并使用 ng-view 来实现一些视图。我有一个观点,我在 ng-repeat 中使用我自己的指令添加“UniteGallery”。所以 unitegallery 会被动态加载 15 次。到目前为止效果很好。
但是,我有一个移动菜单,我可以通过单击一个按钮来切换它。这也很有效。我只是用 ng-class 为菜单 div 设置了一个类,具体取决于菜单是打开还是隐藏。
这当然是在改变我的 dom。我的问题是,随着 dom 的改变,ng-repeat 会再次运行。这会导致闪烁和性能问题。
有没有办法在不反复运行 ng-repeat 的情况下更改 dom?
【问题讨论】:
向我们提供您的代码 请输入代码?谢谢。 【参考方案1】:如果你不想重新加载 ng-repeat 绑定,(使用相应的 dom reload)你可以使用 One Time Bindings
随便用
::
在绑定之前,就像这样:
ng-repeat="照片在 ::gallery"
这将使 $scope.gallery 只绑定到视图一次
https://docs.angularjs.org/guide/expression
【讨论】:
【参考方案2】:除了 Daniel Santiago 的回答:如果您想隐藏问题中提到的“闪烁”,您应该使用 ng-cloak
。
更多关于ngCloak。
【讨论】:
以上是关于AngularJS:不要在 DOM 更改时运行 ng-repeat的主要内容,如果未能解决你的问题,请参考以下文章