从AngularJS控制器向视图中插入HTML

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

这是因为需要将不一致的JSON blob转换为id:value对的嵌套列表。因此,在控制器中创建了HTML,我现在希望显示它

我已经创建了一个模型属性,但是如果不打印HTML,就无法在视图中呈现该属性


更新

问题似乎源于将创建的HTML以带引号的字符串形式呈现。将试图找到一种解决方法

控制器示例:

var SomeController=函数(){
this.customHtml='<ul><li>请给我</li></ul>';
}

示例视图:

<div ng:bind=“customHtml”&gt&lt/部门>

给出:

<部门>
“<ul><li>请给我</li></ul>”
&lt/部门>

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

<div ng bind html="这可以在SidengBindHTML中使用&燃气轮机&lt/部门>

此时,您将得到一个错误,试图在安全上下文中使用不安全值因此您需要使用ngSanitize或$sce来解决该问题

$sce

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

$scope.this可用于sidengBindHTML=$sce.trustAsHtml(someHtmlVar);

消毒

有两个步骤:

  1. 包括angular-sanitize.min.js资源,即:

    <脚本src="lib/angular/angular sanitize.min.js“&燃气轮机&lt/脚本>
    
  2. 在js文件(controller或通常为app.js)中,包括ngSanitize,即:

    angular.module('myApp',['myApp.filters','myApp.services',',
    'myApp.directives','ngSanitize'])
    

发表评论