angular-ui-scroll с синтаксисом (ключ, значение) ng-repeat

Я смотрю на улучшения производительности для большой таблицы, которую я рендеринг, и наткнулся на https://github.com/angular-ui/ui-scroll, которую я хотел бы попробовать.

В моей таблице я использую метод доступа ключ \ значение в моем ng-repeat, например:

<tr ng-repeat="(key, value) in vm.stopTimes track by key">
    <td class="timetable-detail-stop" layout="row" flex layout-align="start center">
        {{ vm.expandedTimetable.stops[key].name }}
    </td>
    <td ng-repeat="departure in value.times track by $index">
        {{departure.time}}
    </td>
</tr>

Могу ли я использовать поддерживаемый синтаксис ключ \ значение из ng-repeat с помощью ui-scroll? Я не уверен, что смогу прочитать документы.

Кто-нибудь делал это используя ключевые объекты \ словари?

Спасибо

1 ответ

Если мы говорим о виртуализации строк таблицы, то это может выглядеть так:

<div style="height: 500px; overflow: auto;" ui-scroll-viewport>
  <table>
    <tr ui-scroll="item in vm.datasource">
      <td class="timetable-detail-stop">
        {{ vm.expandedTimetable.stops[item.key].name }}
      </td>
      <td ng-repeat="departure in item.value.times track by $index">
        {{departure.time}}
      </td>
    </tr>
  </table>
</div>

Где datasource это объект с get метод, который возвращает (через success обратный вызов) массив элементов на основе index а также count Титулы:

this.datasource = {
  get: (index, count, success) => {
    let result = [];
      for (let i = index; i <= index + count - 1; i++) {
        const stopTimeKey = this.getStopTimeKeyByIndex(i);
        result.push({
          key: stopTimeKey,
          value: this.stopTimes[stopTimeKey]
        });
      }
    success(result);
  }
}

Здесь я предполагаю, что мы можем получить stopTimes ключ по индексу... Простейшая реализация getStopTimeKeyByIndex метод может быть

this.getStopTimeKeyByIndex = (index) => Object.keys(this.stopTimes)[index];
Другие вопросы по тегам