当前位置: 首页 > 面试题库 >

ng-bind-html给出了无限的摘要错误($ rootScope.infdig)

公良育
2023-03-14
问题内容

如果我将一个函数与regular一起使用ng-bind,那么一切似乎都很好。但是,如果我使用ng-bind-html,则会收到无限的摘要错误。

=== View ===
1. <span ng-bind="test()">
2. <span ng-bind-html="test()">

=== Controller ===
1. $scope.test = function() {
       return 1;
   }

2. myapp.controller('myapp', function($scope, $sce) {
    $scope.test = function() {
        return $sce.trustAsHtml('<input></input>');
    }
});

知道这里发生了什么吗?该视图确实渲染了输入,但是引发了无限错误摘要error。该文档也不是很有帮助。


问题答案:

问题在于,当对您ng-bind- html的计算机求值时,Angular会调用您的测试函数并获取的结果$sce.trustAsHtml('<input></input>')。然后,Angular再次评估所有绑定,以查看是否所有内容都已解决。这意味着它将再次调用您的测试函数,并查看返回值是否与旧值匹配。不幸的是,事实并非如此。这是因为从$
sce.trustAsHtml返回的值不能通过进行比较===

试试看作为证明:

console.log($sce.trustAsHtml('<input></input>') === $sce.trustAsHtml('<input></input>'));

那将打印错误。这意味着每次Angular调用您的测试函数时,它都会返回一个不同的值。它尝试了多次,然后放弃了。

如果您将$ sce.trustAsHtml的结果绑定到范围变量而不是函数调用中,则问题将消失:

$scope.input = $sce.trustAsHtml('<input></input>');

<span ng-bind-html="input"></span>


 类似资料:
  • 问题内容: 我想知道ng-bind-html和bind-html-compile指令之间的区别。例如我给 到ng-bind-html,这会剔除bind-html-compile所没有的样式。我可以知道何时应该使用每个指令。谢谢。 问题答案: bind-html-compile 不是标准的Angular指令,它带有模块https://github.com/incuna/angular- bind-h

  • 对于我的项目,我必须对一个字符串进行数字签名,并且我正在使用bouncycastle JAR进行同样的签名。环境详情如下。 Weblogic 12c JSF,Primefaces Java版本:1.7.0\u 45 BC Jars:bcmail-jdk15on-152。jar,bcpkix-jdk15on-152。jar,bcprov-ext-jdk15on-152。jar,bcprov-jdk1

  • 问题内容: 我正在尝试将HTML存储在范围变量内,然后在模板视图中使用它。当我以角度阅读如何做时,我遇到了。在这方面,我注意到当我将HTML标签与,等绑定时,它可以工作。但是我无法为其添加标签。 意思是,这有效: 模板: 但这不起作用: 模板: 上面只是一个简化的示例,仅用于演示目的。我的问题是: 1)标签不能与ng-bind-html指令一起使用吗? 2)如果没有,我如何html绑定输入标签,以

  • 问题内容: 我曾经能够用来输出未经消毒的代码(因为消毒发生在服务器端)。 但是现在这个选择消失了吗?我知道我可以使用,但是当不安全易于使用时,将其添加到整个JavaScript上将是一个巨大的痛苦。 我怎么不安全回来? 问题答案: 好吧,仅创建您自己的指令非常简单,这是一个示例。 指令 : 用法 : 演示: http ://jsfiddle.net/cC5VZ/2

  • 问题内容: 我有一些要从json文件加载的html数据。 我通过在应用程序中使用ngSanitize并使用ng-bind-html来显示此html数据。 现在我想从标准转换json blob中的任何链接 至: 。 所以我在json文件上做了一些regExp来转换链接,但是出于某种原因,但是ng-bind-html过滤掉了ng- click的输出,我不知道为什么。是否应该这样做,如果可以,可以禁用此

  • 我在摆弄弹力靴,但每向前走一步,就会让我后退两步。 我将我的简单应用程序与Springboot连接在一起,但我没有得到这个错误: 还有这一点: 我不用任何数据库。应用程序非常简单。下面是主要的类: 下面是其他两个类和: 就是这样。尽管它可能很简单。 下面是文件结构以及build.gradle文件内容: 能有人请帮助我让这个小程序运行,指出我在正确的方向,以解决这个问题? 事先好心谢谢你。