Общий угловой нг-повтор и трек по $index

Просто общий вопрос об использовании track by $index в ng-repeat, я не смог найти решение в документации...

у меня есть <div ng-repeat="concert in concerts track by $index">{{concert}}</div>ниже этого у меня есть массив, который динамически заполняется временем начала концерта, как это, <p>{{startTime[$index]}}</p>, Некоторые концерты, однако, не имеют действительного времени начала, есть ли способ выяснить, есть ли время начала для этого [$index] и если нет, определите текст, который занимает его место?

Я знаю, что это своего рода открытый конец, и я мог бы использовать функцию для сравнения длины concerts массив и startTimes массив и заполнить оставшиеся поля в startTimes с данными, но я надеялся, что может быть проще? Лучшая практика?

Спасибо за совет!

1 ответ

Решение

Вы можете использовать угловой фильтр, который будет проходить и определять, есть ли у концерта время начала, и устанавливать значение по умолчанию на то, что вы хотите

https://docs.angularjs.org/api/ng/filter/filter

app.filter('startingTimeExists', () => {
  return (collection) => {
    let filtered = [];
    angular.forEach(collection, (concert) =>{
      if(concert.hasOwnProperty('startingTime')){
        filtered.push(concert);
      } else {
        concert.startingTime = "7:00PM"
        filtered.push(concert)
      }
    })
    return filtered;
  };
});

возможно что-то подобное вышесказанному подойдет. Я не проверял это.

Другие вопросы по тегам