AngularJs:错误:用于配对项目的自定义筛选器引发错误:“达到 10 次 $digest() 迭代.流产!

AngularJs: Error: Custom filter for pairing items throw error: "10 $digest() iterations reached. Aborting!"

本文关键字:错误 达到 digest 流产 迭代 项目 用于 自定义 AngularJs 筛选      更新时间:2023-09-26

我想创建自定义过滤器,它将数组转换为具有项目对的新数组(我需要此过滤器才能在两列中显示项目):

输入:[项目1,项目2,项目3,项目4等]

结果: [[项目1, 项目2], [项目3,

项目3], 等等...]

我发现这种 finctionality 的任何实现都会抛出错误:达到 10 次 $digest() 次迭代。中止!

即使是简单的退货也不起作用:

function pair() {
    return function (items) {
        return [[items[0], items[1]], [items[2], items[3]]];
    };
}

M.b. 还有另一种方法可以拆分集合介绍列?

小提琴:http://jsfiddle.net/dmitry_zaets/Lae2hxr6/1/

不能使用筛选器方法来修改数据结构。 修改数据会创建一个无休止的循环,其中对数据的每次修改都会导致$digest对另一个$watch()进行排队,而,这反过来又对过滤器的另一个调用进行排队,从而导致另一个数据修改,令人作呕。 您收到的错误是 Angular 的说法,这可能会永远持续下去,因此它会阻止它发生。 筛选器应仅用于限制数组中项的可见性,切勿修改。

如果需要以其他形式表示的数据,则应尽早处理。

此外,您的小提琴未正确显示示例代码。

筛选器不得在每次调用时生成新数组(请参阅文档)。如果确实需要在数据级别创建列,则需要创建(并保留)修改后的数据结构。如果只需要在视图中创建列,还有其他方法可以执行此操作(如流体网格布局)。

相关文章: