【问题标题】:Angular Directives not being rendered when pulled from JSON Object从 JSON 对象中提取时未呈现 Angular 指令
【发布时间】:2016-01-25 14:42:20
【问题描述】:

我正在尝试构建一个从 Wordpress CMS 中提取内容的前端。到目前为止,我已经成功地使用 WP REST API 插件从我的 Wordpress 实例中提取 JSON 数据并使用“ng-bind-html”显示 HTML 内容。

但是,当我尝试在此代码中显示 AngularJS 指令或表达式时,它似乎不起作用。

这是我的 JSON 对象的 sn-p。标准的 HTML 标签可以渲染,AngularUI 选项卡指令之间的实际内容也可以渲染。无法在此处正确渲染,因此截取了屏幕截图。

有什么建议吗?

【问题讨论】:

  • 代码在哪里?您需要添加到目前为止尝试过的代码,否则您可能会面临投票。
  • ng-bind-html 不编译指令。这不是它的本意。需要使用您自己的指令并使用$compile
  • 是否可以编译使用 ng-bind 引入的指令?
  • 不,ng-bind 只处理文本

标签: json angularjs wordpress


【解决方案1】:

正如@charlietfl 在他的评论中提到的,ng-bind-html 只会以安全的方式插入 HTML 内容,这就是文档所说的:

计算表达式并将生成的 HTML 插入 元素以安全的方式。默认情况下,生成的 HTML 内容将 使用 $sanitize 服务进行消毒

您需要根据需要实现自定义指令,以便响应中包含的 HTML 内容也将使用$compile 服务进行编译。这可能如下所示:

app.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);
            });
        }
    };
}]);

代码的灵感来自 GitHub 上的 angular-bind-html-compile 项目。

【讨论】:

【解决方案2】:

感谢大家的帮助,实际上正如 LordTribual 分享他的建议一样找到了我的答案。

链接在这里 - How to make ng-bind-html compile angularjs code

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-05
    • 1970-01-01
    • 2017-07-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多