每次单击的绑定绑定触发器中的AngularJS函数

问题描述 投票:0回答:1

我有一个用例,我必须通过触发对返回用户名的函数的调用来将值绑定到表中的列。使用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个,并且每次都不会触发该功能。

是否有替代方案可以实现预期的功能而又不影响性能

angularjs angularjs-scope angularjs-ng-repeat angularjs-digest
1个回答
0
投票

对于下面的示例,该功能在每个摘要周期至少执行一次:

<td class="col-sm-2 col-md-2 col-lg-2">
  {{getLogUserName(site,key,innerKey)}}
</td>

这是预期的。应注意该函数为idempotent,并使用最少的计算资源。还要避免调用异步操作的函数。

© www.soinside.com 2019 - 2024. All rights reserved.