首页 > JavaScript >  从 AngularJS 控制器将 HTML 插入视图

 从 AngularJS 控制器将 HTML 插入视图

上一篇 下一篇

是否可以在 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

$sce

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

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

消毒

有两个步骤:

  1. 包括 angular-sanitize.min.js 资源,即:
    <script src="lib/angular/angular-sanitize.min.js"></script>
    
  2. 在js文件(控制器或通常的应用程序.js)中,包括ngSanitize,即:
    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】栏目查找您需要的精美模板。

相关搜索
  • 下载密码 lanrenmb
  • 下载次数 402次
  • 使用软件 Sublime/Dreamweaver/HBuilder
  • 文件格式 编程语言
  • 文件大小 暂无信息
  • 上传时间 04-23
  • 作者 网友投稿
  • 肖像权 人物画像及字体仅供参考
栏目分类 更多 >
热门推荐 更多 >
微信图片 单页式简历模板 企业网站 html5 自适应 响应式 微信素材 微信公众平台 微信文章 微信模板
您可能会喜欢的其他模板