Angular ng-repeat最佳实践仅监视特定迭代内的更新

时间:2015-09-11 16:10:54

标签: javascript angularjs angularjs-ng-repeat

我需要渲染一个表,允许用户编辑每行的某些字段,这些字段将影响同一行中的其他字段。

由于这个原因,我无法对我正在呈现的所有数据使用bind-once。

如果我做对了,只需使用如下代码

<table class="table table-bordered table-condensed table-hover">
  <thead>
    <tr class="info">
      <th>Header</th>
      <th>Header</th>
      <th>Header</th>
      <th>Header</th>
    </tr>
  </thead>
  <tbody>
    <tr ng-repeat="a in alist">
      <td>{{::a.id}}</td>
      <td>{{::a.cod}}</td>
      <td>
        <input
          ng-model="a.sel"
          type="checkbox"
          class="input-sm"></input>
      </td>
      <td ng-if="a.sel">
        {{::a.desc}}
      </td>
      <td ng-if="!a.sel">
        "Other Content"
      </td>
    </tr>
  </tbody>
每次用户选中或取消选中 a.sel 复选框时,

都会导致该页面中的所有角度{{vars}}(不是{{:: vars}})被关注的变化。

如果这是真的(因此这就是加载数百行时页面速度慢的原因)我怎么能告诉角度我只想检查特定行内部是否有变化,特定的ng-repeat迭代?

不确定如何获得良好的表现,任何其他提示都表示赞赏。

1 个答案:

答案 0 :(得分:0)

尝试使用追踪来告知角度应该评估的内容:

 <tr ng-repeat="a in alist track by $index">

  <tr ng-repeat="a in alist track by a.id">

更多关于 ng-repeat documentation

的内容