Angular 标记中的复杂表达式与函数

Angular complex expression vs function in your markup

只是想知道是否有针对以下场景的推荐解决方案。

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

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

这会使标记变得混乱并且难以进行单元测试,因此为了解决这个问题,我为此创建了一个函数,例如

ng-show="isShowError()"

现在可以轻松测试 isShowError。现在的问题是,即使元素不可见,每个摘要都会调用 isShowError。这对我来说更糟糕,因为性能非常重要。

有没有更好的方法来实现这个?表达式是推荐的方法吗?如果表达式必须包含 20 个语句怎么办?我也热衷于减少标记中的业务逻辑量。

提前致谢

考虑到函数也像表达式一样计算,使用函数和表达式之间没有太大区别。

意味着如果你只是使用一个表达式,那么它也会在每个摘要周期中被评估。该功能只是添加轻量级间接。

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

当我们有意或无意地向函数添加一些耗时操作,从而减慢函数评估时,问题就来了。