angularjs - 如何在相同条件下为 ng-show 减少 AngularJS 中的观察者

标签 angularjs performance ng-show

在我的 HTML 代码中,一些 div将以相同的条件显示。我将此条件设置为 ng-show每个div .

<div ng-show="sameCondition1">...data1...</div>
...something else...
<div ng-show="sameCondition1">...data2...</div>
...something else...
<div ng-show="sameCondition1">...data3...</div>

AngularJS 将为每个 ng-show 创建 3 个观察者.它会影响性能。在这种情况下,有没有办法减少观察者的数量?

最佳答案

我不确定这是否可行,但如果您使用的是 AngularJS > 1.3.x 和您的 someCondition1一次迭代后不会改变,那么您可以使用 Angular 的取消注册观察者的功能 ::像下面这样:

<div ng-show="::sameCondition1">...data1...</div>
...something else...
<div ng-show="::sameCondition1">...data2...</div>
...something else...
<div ng-show="::sameCondition1">...data3...</div>

阅读更多 One-time binding

更新

由于您的情况会更新,因此我的上述解决方案对您不起作用。但是我有一个更简洁的解决方案,可以使用 CSS 将观察者减少到 1 个。干得好:
<div class="{{sameCondition1 ? '' : 'hide-similar'}}">
    <div class="similar1">...data1...</div>
    ...something else...
    <div class="similar1">...data2...</div>
    ...something else...
    <div class="similar1">...data3...</div>
</div>

现在,定义你的 CSS:
.hide-similar .similar1 {
    display: none;
}

关于angularjs - 如何在相同条件下为 ng-show 减少 AngularJS 中的观察者,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35593442/

相关文章:

可以期望 C 数组具有与结构相同的性能吗?

angularjs - 使用 ng-repeat 内使用的 ng-click 更改 bool 值

angularjs - Angular Javascript 动画适用于 ng-if 但不适用于 ng-show

angularjs - 导入 angular-mocks 的正确方法是什么

javascript - Angular 和 Firebase 的身份验证问题,未定义不是函数,如何?

javascript - 我如何在 Angular JS 谷歌地图中传递嵌套的 json 数组对象

algorithm - 通过不直接处理它的中间方法传递相同的变量

javascript - Controller 性能比较中的自定义过滤器与过滤器功能

angularjs - 导航可以在浏览器中使用,但不能在 Ionic View iPhone 应用程序中使用

AngularJS View 未在指令内的 ng-show 上更新