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的主要内容,如果未能解决你的问题,请参考以下文章

在运行时更改AngularJs中背景图像的最佳方法

angularjs怎样更改子作用域的值

AngularJS:AngularJS 渲染模板后如何运行附加代码?

angularjs和js的区别

AngularJS - 单独的控制器和 DOM 操作

AngularJs学习笔记(慕课网)