You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何AngularJS使用ng-repeat时突然出现ngRepeat:iexp错误?

报错信息:Error: [ngRepeat:iexp] Expected expression in form of 'item in collection[ track by id]' but got ''.

报错触发原因

AngularJS抛出该错误的核心是ng-repeat指令解析到的遍历表达式不符合item in 集合的格式要求,结合你提供的代码,具体触发点如下:

  • 控制器别名不匹配:你<tbody>标签上通过ng-controller="EventRollController as eventRollCtrl"声明的控制器别名为eventRollCtrl,但ng-repeat中写的遍历源是eventCtrl.events,如果父级作用域没有额外声明eventCtrl,eventCtrl.events会返回undefined,特殊场景下会被解析为空字符串,触发格式校验错误。
  • 变量赋值异常:如果你近期修改过数据请求逻辑,可能存在events变量被意外赋值为null、undefined的情况,导致ng-repeat没有拿到有效的遍历集合。
解决方法

按照优先级依次排查修改即可:

  1. 修正控制器别名引用错误
    如果events数组是定义在EventRollController中的,将ng-repeat表达式中的eventCtrl替换为你声明的别名eventRollCtrl即可,修改后代码如下:
<tr scope="row" data-ng-repeat="event in eventRollCtrl.events">
  1. 增加变量兜底逻辑
    在对应控制器的初始化代码中给events设置空数组默认值,避免接口请求失败、变量被意外重写时出现空值:
// 写在EventRollController初始化逻辑中
this.events = []
// 后续接口请求成功后再赋值 this.events = 接口返回的数组
  1. 可选优化:增加track by规则
    如果存在数组元素重复的场景,可以在表达式末尾添加track by规则避免重复项报错,示例:
<!-- 有唯一主键id用event.id,没有就用内置的$index -->
<tr scope="row" data-ng-repeat="event in eventRollCtrl.events track by $index">

内容的提问来源于stack exchange,提问作者stefanks

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 11:18:00