在指令属性上使用filter会导致$ digest循环中的无限循环

 冬-冰释_488 发布于 2023-02-03 10:34

尝试在具有隔离范围的指令上使用过滤器:

在$ digest循环中导致无限循环:

当应用程序的模型变得不稳定并且每个$摘要周期触发状态更改和随后的$摘要周期时,会发生此错误.Angular检测到这种情况并防止无限循环导致浏览器无响应.

.directive 'tags', ->
    restrict: 'A'
    scope:
        tags: '='
    templateUrl: 'partials/tags.html'


.filter 'refTags', ->
    (tags) ->
        ['a filtered', 'array of values']

谐音/ tags.html

  • {{tag.tag}}

p.tags在控制器中

p.tags = ['HTML5', 'CSS', 'JavaScript', 'Angular JS', 'Backbone JS', 'Node JS', 'SASS + Compass', 'Oragami', 'Running', 'Cat Food', '#catfood']

这种行为是否正常?

    过滤器不能用于传递给指令的隔离范围的值吗?

    这有解决方法吗?我需要过滤数组值

    是否有另一种设计不同的解决方案?

Maxim Shoust.. 5

我不认为这是一个指令问题,而是一个过滤问题.过滤器的目标是将数组作为输入并基于某些规则和条件返回另一个数组,其中数组项具有与输入相同的结构.

在$ digest循环中导致无限循环的原因是在过滤器中,每个摘要循环过滤器返回一个导致额外循环的不同对象.

我建议你从返回相同的数组开始,即input = output.检查一切是否按预期工作.之后添加相关条件.

1 个回答
  • 我不认为这是一个指令问题,而是一个过滤问题.过滤器的目标是将数组作为输入并基于某些规则和条件返回另一个数组,其中数组项具有与输入相同的结构.

    在$ digest循环中导致无限循环的原因是在过滤器中,每个摘要循环过滤器返回一个导致额外循环的不同对象.

    我建议你从返回相同的数组开始,即input = output.检查一切是否按预期工作.之后添加相关条件.

    2023-02-03 10:38 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有