如何减少AngularJS中的观察者以获得具有相同条件的ng-show

时间:2016-02-24 04:45:15

标签: 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个观察者。它会影响性能。在这种情况下,有没有办法减少观察者的数量?

2 个答案:

答案 0 :(得分:7)

我不确定这是否可行,但如果您使用的是AngularJS&gt; 1.3.x并且您的#import "XXX-Swift.h" - (void)viewDidLoad { [super viewDidLoad]; className *obj = [[className alloc]init]; [obj someFunc]; } 在一次迭代后没有变化,那么您可以使用Angular的功能来使用someCondition1取消注册观察者,如下所示:

::

详细了解One-time binding

<强>更新

由于您的情况会更新,因此我的上述解决方案对您不起作用。但我有一个更清洁的解决方案,使用CSS将观察者减少到1。你走了:

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

现在,定义你的CSS:

<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>

答案 1 :(得分:0)

使用可以使用ng-switch,但它取决于条件 - 如果你的条件取决于单个变量。(例如:a == 1,a == 2,a == 3)。它会将观察者从3减少到1。