如果我有$scope.FOO_CONST = 4
,那么我可以这样做:
<div ng-show="bar.status == FOO_CONST">I'm in the FOO state</div>
但是,如果我正确理解,那就会创建一个观察器功能,每个摘要周期都会评估bar.status
和FOO_CONST
中的更改,即使我知道后者永远不会改变。 如果我有:
<div ng-show="bar.status == ::FOO_CONST">I'm in the FOO state</div>
是否删除了对FOO_CONST的冗余检查?如果是这样,那是否更高效? (我已经发现,随着大型角度应用程序的性能,我需要考虑的事情......)
或者,有没有更好的方法来实现角度表达式中常量的测试?
更新:事实证明== ::FOO_CONST
在1.3.5中不是有效的语法。所以我将我的问题改为:
使用角度表达式针对常量计算变量的高效方法是什么? (即只关注测试一侧的变化)
答案 0 :(得分:1)
手表实际上是在表达式上设置的,而不是单个变量。每个摘要,angular将评估表达式:
bar.status == FOO_CONST
并将其与之前的值进行比较。如果它已经改变,它将触发监视功能。
因此,只创建了一个$ watch,并且您正在以最高效的方式执行此操作。
编辑:
如果bar.status可以有几个可能的值,并且每个部分都有几个部分
"bar.status == SOME_CONSTANT"
然后ng-switch绝对有助于减少手表的数量。
<div ng-switch="bar.status">
<div ng-switch-when="FOO_CONST">
</div>
<div ng-switch-when="FOO_CONST1">
</div>
<div ng-switch-when="FOO_CONST2">
</div>
<div>
如果您使用当前推断的实现,只有一个手表(在表达式“bar.status”上)与三个手表。