是否可以在 AngularJS 控制器中创建 HTML 片段并在视图中显示此 HTML?
这是因为需要将不一致的 JSON blob 转换为嵌套的对列表。因此,HTML是在控制器中创建的,我现在正在寻找显示它。id: value
我已经创建了一个模型属性,但如果不打印 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 来解决这个问题。attempting to use an unsafe value in a safe context
在控制器中使用以转换 html 字符串。$sce.trustAsHtml()
$scope.thisCanBeusedInsideNgBindHtml = $sce.trustAsHtml(someHtmlVar);
有两个步骤:
<script src="lib/angular/angular-sanitize.min.js"></script>
angular.module('myApp', ['myApp.filters', 'myApp.services',
'myApp.directives', 'ngSanitize'])
您还可以创建如下所示的过滤器:
var app = angular.module("demoApp", ['ngResource']);
app.filter("trust", ['$sce', function($sce) {
return function(htmlCode){
return $sce.trustAsHtml(htmlCode);
}
}]);
然后在视图中
<div ng-bind-html="trusted_html_variable | trust"></div>
注意:此过滤器信任传递给它的任何和所有 html,如果将带有用户输入的变量传递给它,则可能会出现 XSS 漏洞。
Angular JS在标签中显示HTML
上面链接中提供的解决方案对我有用,此线程上的所有选项都没有。对于任何在AngularJS版本1.2.9中寻找相同东西的人
这是一份副本:
好的,我找到了解决方案:
.JS:
$scope.renderHtml = function(html_code) { return $sce.trustAsHtml(html_code); };
.HTML:
<p ng-bind-html="renderHtml(value.button)"></p>
编辑:
这是设置:
JS文件:
angular.module('MyModule').controller('MyController', ['$scope', '$http', '$sce',
function ($scope, $http, $sce) {
$scope.renderHtml = function (htmlCode) {
return $sce.trustAsHtml(htmlCode);
};
$scope.body = '<div style="width:200px; height:200px; border:1px solid blue;"></div>';
}]);
文件:
<div ng-controller="MyController">
<div ng-bind-html="renderHtml(body)"></div>
</div>
模板简介:该模板名称为【 从 AngularJS 控制器将 HTML 插入视图】,大小是暂无信息,文档格式为.编程语言,推荐使用Sublime/Dreamweaver/HBuilder打开,作品中的图片,文字等数据均可修改,图片请在作品中选中图片替换即可,文字修改直接点击文字修改即可,您也可以新增或修改作品中的内容,该模板来自用户分享,如有侵权行为请联系网站客服处理。欢迎来懒人模板【JavaScript】栏目查找您需要的精美模板。