Общий угловой нг-повтор и трек по $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;
};
});
возможно что-то подобное вышесказанному подойдет. Я не проверял это.