javascript - 替换指令内的值而不替换整个指令

标签 javascript angularjs

我的指令有一个模板,其中包含一个名为 content 的范围变量:

<div class="directive-view">
    <span class="directive-header">My Directive</span>
    {{content}}
</div>

我有以下指令:

(function () {
    "use strict";

    angular
        .module('myApp.myDirective', [])
        .directive("myDirective", myDirective);

    function myDirective($compile) {
        return {
            restrict: 'E',
            scope: {
            },
            templateUrl:'../partials/directives/my-directive.html',
            controller: function($scope) {
                $scope.content = "<span>Some HTML &mdash; some more HTML</span>";
            },
            link: function (scope, element, attrs, ctrl) {
                var compiledContent = $compile(scope.content)(scope);
                scope.content = compiledContent;
            }
        };
    }
})();

我期望看到的代替 {{content}} 的是:

Some HTML — some more HTML

我看到的是:

{"0":{"ng339":23},"length":1}

如何将范围字符串的值设置为某个初始值,然后在编译指令时从指令链接内更新它(作为编译后的 HTML)?

最佳答案

这是一个工作 plunker.

首先,改变:

.directive('my-directive')

.directive('myDirective')

此外,根据我收集的信息,您希望使用驻留在指令中的作用域变量在编译时将 html 嵌入指令模板中。为此,您不需要 $compile

为此,您需要使用 ngBindHtml,如下所示:

HTML:

<div class="directive-view">
    <span class="directive-header">My Directive</span>
    ><div ng-bind-html="trustAsHtml(content)"></div>
</div>

指令:

function myDirective($compile, $sce) {
    return {
        restrict: 'E',
        scope: {
        },
        template: '../partials/directives/my-directive.html',
        controller: function($scope) {
            $scope.content = "<span>Some HTML &mdash; some more HTML</span>";
        },
        link: function (scope, element, attrs, ctrl) {


            scope.trustAsHtml = function(val) {
              return $sce.trustAsHtml(val);
            }
        }
    };
}

关于javascript - 替换指令内的值而不替换整个指令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35811612/

相关文章:

javascript - 从键中检索值数组

javascript - 如何使用包含一些组件名称的数组来渲染那些预定义的组件

javascript - 如何在 angularjs 中的单选按钮中应用自动保存概念?

javascript - 在 AngularJS 中对表进行排序后删除确切的行

javascript - 将变量更改为 window.open(...) 中的参数

javascript - 销毁 CSS Bootstrap 模态

javascript - 我的图像到 data-uri 损坏了图像

angularjs - 使用 MEAN 堆栈从 Windows 迁移到 Linux

ruby-on-rails - AngularJS ng-submit 在 Rails 生成的表单上失败

javascript - 在没有任何参数的情况下在javascript中重新加载图像