AngularJS在ng重复循环中保留一个临时值

AngularJS keep a temporary value in ng-repeat loop

本文关键字:一个 保留 ng 循环 AngularJS      更新时间:2024-01-29

我有一个过滤器,它将生成一个随机值:

function randomize() {
    return function (input) {
        if (input !== null && input !== undefined && input > 1) {
            return Math.floor((Math.random() * input) + 1);
        }
    };
}

我的html:中有一个ng重复块

<tr data-ng-repeat="config in Configs">
  <td>
      <img src="/images/{{21|randomize}}.png" alt="1">
  </td>
  <td>
      <img src="/images/{{21|randomize}}.png" alt="2">
  </td>

从中可以看出,第二个td块中的图片可能与第一个td块的值不同,因为它正在生成一个新的随机数。

问题是,我如何保持从第一个td块生成的随机数,并在同一个ng重复循环中的某个地方(例如第二个td块)重用它?

我只想在当前循环中保留它。

有没有办法在不接触$scope和JS文件的情况下做到这一点?如果没有,最简单的方法是什么?

您可以将筛选器调用的返回值设置为本地范围的变量。例如

  <tr data-ng-repeat="config in Configs">
    <td>{{rand1 = (21|randomize)}}.png</td>
    <td>{{21|randomize}}.png</td>
    <td>{{rand1}}</td>
  </tr>

Plunker演示~http://plnkr.co/edit/djnXfH9JOC7wG1yiYIPT?p=preview