问题

是否可以在Angular控制器中创建HTML片段,并在视图中显示此HTML?

这来自于将不一致的JSON blob转换为 id:value 对的嵌套列表的要求.因此,HTML在控制器中创建,我现在正在显示它.

我已经创建了一个模型属性,但是不能在视图中渲染这个属性,而只是打印HTML.


更新

似乎问题来自于将创建的HTML作为引号内的字符串进行角度渲染.将尝试找到一个解决方案.

示例控制器:

var SomeController = function () {

    this.customHtml = '<ul><li>render me please</li></ul>';
}

示例视图:

<div ng:bind="customHtml"></div>

赠与:

<div>
    "<ul><li>render me please</li></ul>"
</div>


解决方法

对于Angular 1.x,在HTML中使用 ng-bind-html :

<div ng-bind-html="thisCanBeusedInsideNgBindHtml"></div>

此时,您会收到一个尝试在安全上下文中使用不安全的值错误,因此您需要使用 ngSanitize $ sce 来解决.

$sce

在控制器中使用 $ sce.trustAsHtml()来转换html字符串.

 $scope.thisCanBeusedInsideNgBindHtml = $sce.trustAsHtml(someHtmlVar);

ngSanitize

有2个步骤:

  1. include the angular-sanitize.min.js resource, i.e.:
    <script src="lib/angular/angular-sanitize.min.js"></script>

  2. In a js file (controller or usually app.js), include ngSanitize, i.e.:
    angular.module('myApp', ['myApp.filters', 'myApp.services', 'myApp.directives', 'ngSanitize'])




相关问题推荐