【问题标题】:One time binding called infinitely many times. Why?一次绑定调用无限多次。为什么?
【发布时间】:2020-03-12 01:22:52
【问题描述】:

一次性绑定在 AngularJS 中不起作用。为什么?

这是一段代码:

<div ng-repeat="c in ::relatedCasesInfo.hideRelations(type.cases, info) 
       | limitTo:relatedCasesInfo.initialRelationsAmount track by c.idFromFirst"
     class="initial-case-container">
    <ng-include ng-repeat="name in [c.name + (type.otherCasesArePresent || !$last || type.cases.length > relatedCasesInfo.initialRelationsAmount ? ', ' : '' )]"
        src="'dist/directiveTemplates/card/controls/relatedCases/casesContextMenu.html?v=' + $root.appVersion">
    </ng-include>
</div>

这是hideRelations函数:

function hideRelations(relations, info) {
    return relations;
};

运行 html 后,我看到 hideRelations 被无限次调用。为什么?我可能在这里遗漏了什么?

【问题讨论】:

  • 我猜hideRelations里面的逻辑比较多,为什么要在视图中绑定函数?
  • 在包含之前检查列表是否包含任何项目。(ng-if="if has value")

标签: angularjs angularjs-ng-repeat one-time-binding


【解决方案1】:

框架重新计算,因为函数返回值undefined 或计算不稳定。

来自文档:

一次性绑定

:: 开头的表达式被视为一次性表达式。一次性表达式一旦稳定就会停止重新计算,如果表达式结果是一个未定义的值(请参阅value stabilization algorithm),这会在第一次摘要之后发生。

有关详细信息,请参阅

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-01-12
    • 2015-01-16
    • 2022-01-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多