2015-02-10 57 views
0

想知道是否有以下情况的推荐解决方案。您的标记中的角度复杂表达与功能

我在我的标记中有一个复杂的表达式来显示一些错误消息,例如,

ng-show="currentSection == 'pickup-from' && carHireEnquiryForm.pickUpLocation.$dirty && carHireEnquiryForm.pickUpLocation.$invalid && carHireEnquiryForm.pickUpLocation.$error.isLocation" 

这可能会使标记混乱,很难单元测试,所以为了解决这个问题,我为此创建了一个函数,例如,

ng-show="isShowError()" 

现在可以轻松测试isShowError。现在的问题是,即使元素不可见,也会在每个摘要上调用isShowError。这对我来说甚至是最糟糕的,因为它的表现非常重要。

有没有更好的方法来实现这一目标?表达式是推荐的方式吗?如果表达式必须包含20个陈述呢?我热衷于减少标记中的业务逻辑量。

预先感谢

回答

2

没有太多使用功能和表达,考虑到这一事实,该功能还评价等的表达之间的差异。

意味着如果您只是使用表达式,那么也会在每个摘要循环中对其进行评估。该函数只是添加轻量级间接。

只要表达式评估速度快,您可以使用,但函数更好,因为它们可以封装验证逻辑。

问题出现时,我们故意或不知不觉地在功能上添加了一些耗时的操作,从而减慢了功能评估的速度。

+0

表达式是否对每个摘要进行评估,还是只使用只在“更改”时才进行评估的手表?我不知道如何证明这一点。 – Cuong 2015-02-10 13:02:07

+0

说实话,这正是我的想法开始.....“所以这些功能运行了多少次”.....但6个月后,按照相同的模式线我现在有000多万不必要的'小'​​的函数调用,我认为这是在移动设备上杀死我的应用程序。 – Cuong 2015-02-10 13:06:13

+0

要确定“何时更改”,必须在每个摘要循环中对其进行评估。另见http://stackoverflow.com/questions/9682092/databinding-in-angularjs – Chandermani 2015-02-10 13:07:01