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

Angular js中$ sce.trustAsHtml()字符串中的调用函数

宰父远
2023-03-14
问题内容

我正在使用Angularjs开发应用程序,并在页面中添加HTML使用$sce.trustAsHtml()。我想在上面动态添加的内容中调用一个函数。我的html和脚本如下。

的HTML

<div ng-app="ngBindHtmlExample">
  <div ng-controller="ngBindHtmlCtrl">
   <p ng-bind-html="myHTML"></p>
  </div>
</div>

Java脚本

angular.module('ngBindHtmlExample', ['ngSanitize'])

.controller('ngBindHtmlCtrl', ['$scope','$sce', function ngBindHtmlCtrl($scope, $sce) {
  $scope.myHTML =$sce.trustAsHtml(
     'I am an <code>HTML</code>string with <a href="#" ng-mouseover="removeExp()">links!</a> and other <em>stuff</em>');

    $scope.removeExp = function (){
       console.log('dfdfgdfgdfg');
    }
}]);

jsfiddle

点击这里查看


问题答案:

这有点棘手,因为ng-bind-html将只插入普通的旧html而不用麻烦对其进行编译(因此html中的任何指令都不会被angular处理。

诀窍是在模板更改时找到一种编译方法。例如,您可以创建一个执行此操作的指令。它看起来像:

.directive('compileTemplate', function($compile, $parse){
    return {
        link: function(scope, element, attr){
            var parsed = $parse(attr.ngBindHtml);
            function getStringValue() { return (parsed(scope) || '').toString(); }

            //Recompile if the template changes
            scope.$watch(getStringValue, function() {
                $compile(element, null, -9999)(scope);  //The -9999 makes it skip directives so that we do not recompile ourselves
            });
        }         
    }
});

然后可以像这样使用它:

<p ng-bind-html="myHTML" compile-template></p>

在这里查看工作示例:

http://jsfiddle.net/3J25M/2/



 类似资料:
  • 问题内容: 在PHP中,HEREDOC字符串声明对于输出html块确实非常有用。您可以通过在变量前面加上$来解析变量,但是对于更复杂的语法(如$ var [2] [3]),则必须将表达式放在{}中。 在PHP 5中,这 是 可能实际上使{}一个HEREDOC字符串中括号内的函数调用,但你必须要经过一些工作。函数名称本身必须存储在变量中,并且必须像动态命名函数一样调用它。例如: 如您所见,这不仅比以

  • 问题内容: 几天前,我在网上搜索时,发现了一篇有关python词典的有趣文章。这是关于使用字典中的键来调用函数。在那篇文章中,作者定义了一些函数,然后定义了一个字典,其键与函数名完全相同。然后,他可以从用户那里获得输入参数并调用相同的方法(类似于实现大小写中断)。此后,我意识到同样的事情,但有所不同。我想知道如何实现这一目标。如果我有一个功能: 现在,如果我有这样的字符串: 有没有一种方法可以执行

  • 本文向大家介绍SQL中的字符串函数,包括了SQL中的字符串函数的使用技巧和注意事项,需要的朋友参考一下 SQL中的字符串函数都用于操作字符串值。SQL指定了许多字符串函数。其中一些领域如下: ASCII码(str) 此函数返回提供的字符串str中第一个单词的ASCII或数字值。如果为空字符串,则返回0。 例 这将返回S的ASCII值,即83,因为它是字符串中的第一个字符。 BIN(n) 这里n是二

  • 问题内容: 我正在尝试将$ sce.trustAsHtml()与ng- repeat中的对象属性一起使用。结果是HTML完全空白。不过,使用ngSanitize可以正确输出HTML。 顺便说一下,我正在使用AngularJS v1.3.0-beta.3。不知道是否有错误或我做错了什么。 问题答案: 您不能在表达式中使用(除非是的属性),因为表达式是在的上下文中求值的。 最干净的方法是使用。 第二种

  • 我展示了一个包含JSON的数组,并直接用超文本标记语言展示了这个数组,在这里你可以找到。它给NaN作为输出。 这是我的超文本标记语言:

  • 问题内容: 有没有一种方法可以使用新的格式语法来格式化函数调用中的字符串?例如: 因此它在字符串 内部* 调用函数函数,而不是在格式化函数中作为参数。 * 编辑:这是另一个示例,可能会更好地显示我的挫败感,这就是我想要的: 这是我要避免的事情: 问题答案: Python 3.6添加了文字字符串插值,并以前缀编写。请参阅PEP 0498-文字字符串插值 。 这允许一个人写 应当注意,这些不是实际的字