一般角度ng重复并按$index跟踪

General angular ng-repeat and track by $index

本文关键字:index 跟踪 ng      更新时间:2023-09-26

这只是一个关于在ng repeat中使用track by$index的一般问题,我在文档中找不到解决方案。。。

我有一个<div ng-repeat="concert in concerts track by $index">{{concert}}</div>,在它下面有一个数组,它动态地填充了音乐会的开始时间,比如<p>{{startTime[$index]}}</p>。然而,有些音乐会没有有效的开始时间,有没有办法弄清楚[$index]是否有开始时间,如果没有,定义代替它的文本?

我知道这是一种开放式的,&我可以使用一个函数来比较concerts数组和startTimes数组的长度,并用数据填充startTimes中的其余字段,但我希望有一种更简单的方法?最佳实践?

谢谢你的建议!

您可以使用一个角度过滤器,该过滤器将检查并识别音乐会是否有开始时间,并将默认值设置为您想要的

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;
  };
});

也许类似上面的东西会起作用。我还没有测试过。