javascript - AngularJS $sce 只信任某些元素

标签 javascript angularjs ngsanitize

假设以下字符串:

<b><i><anotherelement>Hello World</anotherelement></i></b>

我只想允许粗体元素工作,而斜体元素(以及任何其他元素!)保持不变,因此输出为: <强> <i><anotherelement>Hello World</anotherelement></i>

目前我使用:

function outputHtml($element, value){
  $element.html($sanitize(value));
}

该解决方案信任 $sce bundle 附带的所有元素,因此它对我来说没有用:(

任何帮助将不胜感激, 谢谢!

最佳答案

检查这个 fiddle - http://jsfiddle.net/3J25M/764/

Controller -

angular.module('ngBindHtmlExample', ['ngSanitize'])
.controller('ngBindHtmlCtrl', ['$scope','$sce', function($scope, $sce) {
    $scope.value = '<i><anotherelement>Hello World</anotherelement></i>';
    $scope.myHTML = $sce.trustAsHtml('<b ng-bind="value"></b>');
}])
.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
            });
        }
    }
});

HTML -

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

希望这有帮助!!

关于javascript - AngularJS $sce 只信任某些元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39998305/

相关文章:

javascript - JQuery AJAX 尝试解析 XML,即使使用 "dataType": "JSON"

javascript - 显示与选项不同的文本

javascript - 如何使用 angularjs sanitize 安全地保留 html 颜色

javascript - 使用 Angular 转换 JSON 文件中的 HTML

javascript - ngSantize 无法与 ng-bind-html 一起正常工作

javascript - 如何在不上传的情况下访问图像并将其显示在 IMG 标签中

javascript - 当用户位于页面中的不同点时,如何在 UI Bootstrap 中显示警报

javascript - 在 JavaScript 中采用灵活的参数?

javascript - Controller 的未知提供程序错误

javascript - Angular : pass a default value from server side