我有一个用例,我必须通过触发对返回用户名的函数的调用来将值绑定到表中的列。使用ng-repeat-start循环表行,并使用分页显示记录。
代码1:
<td class="col-sm-2 col-md-2 col-lg-2">
{{::getLogUserName(site,key,innerKey)}}
</td>
代码2:
<td class="col-sm-2 col-md-2 col-lg-2"
ng-init="userName = getLogUserName(site,key,innerKey)">
{{userName}}
</td>
代码3:
<td class="col-sm-2 col-md-2 col-lg-2"
ng-init="userName = ::getLogUserName(site,key,innerKey)">
{{userName}}
</td>
以上3个示例在第1页中工作正常,但对于后续页面,在大多数情况下不会触发该功能。
代码4:
<td class="col-sm-2 col-md-2 col-lg-2">
{{getLogUserName(site,key,innerKey)}}
</td>
getLogUserName会为每个单击事件和操作触发,这不是事实,因为分页条目可能是每页100个,并且每次都不会触发该功能。
是否有替代方案可以实现预期的功能而又不影响性能
对于下面的示例,该功能在每个摘要周期至少执行一次:
<td class="col-sm-2 col-md-2 col-lg-2">
{{getLogUserName(site,key,innerKey)}}
</td>
这是预期的。应注意该函数为idempotent,并使用最少的计算资源。还要避免调用异步操作的函数。