当我尝试使用| filter:searchText时,angularJS中超出了最大调用堆栈大小

当我尝试使用| filter:searchText时,angularJS中超出了最大调用堆栈大小,angularjs,Angularjs,我尝试使用ng repeat指令中的|filter过滤数据 ng-repeat="item in transactions |filter:searchText" 事务是包含数据的数组,如下所示: { $$hashKey: "object:666", amount: -50, card: "3158", catId: 0, dateTime: {month: 2, value: "2015-02-23T14:00:00"} details: "blabla", id: 2830, } se

我尝试使用ng repeat指令中的
|filter
过滤数据

 ng-repeat="item in transactions |filter:searchText"
事务是包含数据的数组,如下所示:

{
$$hashKey: "object:666",
amount: -50,
card: "3158",
catId: 0,
dateTime: {month: 2, value: "2015-02-23T14:00:00"}
details: "blabla",
id: 2830,
}
searchText-是用户输入的文本

当用户输入文本时,它必须过滤数据,但它不工作,因为它引发异常(超出了最大调用堆栈大小)。如果确定要写入要用于过滤数据的字段类型,则通常可以使用该方法

ng-repeat="item in transactions |filter:{amount:searchText}"

对于一个非常简单的过滤器,我也有同样的问题,但我是在一个具有循环引用的对象数组上进行过滤的。我没有对过滤器进行任何函数调用——它只是一个简单字符串上的内置过滤器

我有两个具有多对多关系的对象列表,一旦从$resource加载它们,我就为它们设置了一个属性,该属性是另一个列表中与它们有关系的所有对象的数组。我有一个作业列表,它跟踪自己的任务列表,还有一个任务列表,它有自己的作业子列表

for (let job of service.jobs)
{
   job.tasks = service.tasks.filter(t => t.jobid == job.id);
}

for (let task of service.tasks)
{
   task.jobs = service.jobs.filter(j => j.taskid == task.id);
}
(这种关系比这更复杂,但这是它的核心)

我试图通过将周期提前关联一次而不是页面中的每个摘要来保存周期,但它创建了一个循环,只有在我尝试过滤它们时才会导致问题。我可能会将其限制为过滤非“任务”字段,但实际上我也希望查看它们。我更改了它,以便视图只调用函数将相关对象内联到模板中

<div ng-repeat="job in service.jobs | filter:jobFilterText">  <-- BOOM
   <div ng-repeat="task in service.getTasksForJob(job.id)">
      {{ task.name }}
   </div>
</div>

您确定重复中的某些内容不是原因,也不是过滤器吗?这是一个奇怪的错误与内置过滤器。是的。。。你说得对(@KostyaVyrodov)你能解决这个问题吗?我在一个复杂的对象上也遇到了同样的错误,我不知道按字段过滤对我很有效。谢谢!