当前位置: 首页 > 面试题库 >

如何使ng-bind-html编译angularjs代码

孙福
2023-03-14
问题内容

我正在使用angularjs 1.2.0-rc.3。我想将html代码动态地包含到模板中。为此,我在控制器中使用:

html = "<div>hello</div>";
$scope.unicTabContent = $sce.trustAsHtml(html);

在模板中,我得到了:

<div id="unicTab" ng-bind-html="unicTabContent"></div>

它适用于常规html代码。但是,当我尝试放置角度模板时,它不会被解释,它仅包含在页面中。例如,我想包括:

<div ng-controller="formCtrl">
    <div ng-repeat="item in content" ng-init="init()">
    </div>
</div>

非常感谢


问题答案:

此解决方案不使用硬编码模板,您可以编译嵌入在API响应中的Angular表达式。

步骤1. 安装此指令:https :
//github.com/incuna/angular-bind-html-
compile

步骤2. 将指令包括在模块中。

angular.module("app", ["angular-bind-html-compile"])

步骤3. 在模板中使用指令:

<div bind-html-compile="letterTemplate.content"></div>

结果:

控制器对象

 $scope.letter = { user: { name: "John"}}

JSON回应

{ "letterTemplate":[
    { content: "<span>Dear {{letter.user.name}},</span>" }
]}

HTML输出=

<div bind-html-compile="letterTemplate.content"> 
   <span>Dear John,</span>
</div>

为了参考起见,以下是相关指令:

(function () {
    'use strict';

    var module = angular.module('angular-bind-html-compile', []);

    module.directive('bindHtmlCompile', ['$compile', function ($compile) {
        return {
            restrict: 'A',
            link: function (scope, element, attrs) {
                scope.$watch(function () {
                    return scope.$eval(attrs.bindHtmlCompile);
                }, function (value) {
                    element.html(value);
                    $compile(element.contents())(scope);
                });
            }
        };
    }]);
}());


 类似资料:
  • 问题内容: 我曾经能够用来输出未经消毒的代码(因为消毒发生在服务器端)。 但是现在这个选择消失了吗?我知道我可以使用,但是当不安全易于使用时,将其添加到整个JavaScript上将是一个巨大的痛苦。 我怎么不安全回来? 问题答案: 好吧,仅创建您自己的指令非常简单,这是一个示例。 指令 : 用法 : 演示: http ://jsfiddle.net/cC5VZ/2

  • 问题内容: 我有指令 控制器: 在索引页面上,我有: 每当包含不同的html时,我的自定义服务都会返回 我想做的是每次在指令的内容中推送不同的值以对其进行编译并将其放入html并处理控制器中的click函数时。因为我是AngularJS的新手,所以一段时间以来一直在努力解决这个问题。请帮忙。 问题答案: 您不需要处理$ sce即可达到目的。 您可以将as字符串传递给指令。在指令中编译后,它将起作用

  • 问题内容: 我想知道ng-bind-html和bind-html-compile指令之间的区别。例如我给 到ng-bind-html,这会剔除bind-html-compile所没有的样式。我可以知道何时应该使用每个指令。谢谢。 问题答案: bind-html-compile 不是标准的Angular指令,它带有模块https://github.com/incuna/angular- bind-h

  • 问题内容: 我需要一些使用ng-bind-html创建的ng-model的帮助。我在服务器中有一个JSON文件,其中有一些html和一些类似的输入: .json 然后,在我的HTML文件中,我会看到以下内容: 在我的Angular控制器中,我有一个JSON文件的ajax调用: 控制器: 填充了html,但是我不能将$ watch用于通过这种方法生成的模型(q)。 我如何监视以此方式创建的模型的变化

  • 问题内容: 我正在尝试使用provider和指令来允许我的控制器将HTML注入DIV。 但是,我无法使其正常工作。 我发现这是因为它已从AngularJS中删除(谢谢)。 但是没有,我得到这个错误: http://errors.angularjs.org/undefined/$sce/unsafe 问题答案: 您需要确保已加载sanitize.js。例如,从https://ajax.googlea

  • 问题内容: 我想显示“附件”部分的表格格式。我有查询和结果数据。两者都有一个共同的列。我想显示基于ID的附件类别描述。在我尝试过的尝试中,它没有用。 我在中使用一个函数,希望方法错误,期望该方法有一个替代方案。 该包含, 和来自数据库的数据一样, HTML代码为 控制器的代码是 样本柱塞:http ://plnkr.co/edit/dZy5gW4q9CxWF2NszXYc 问题答案: 括号是否经过