javascript - $sce.trustAsHtml 无法按预期工作

标签 javascript angularjs

这是我正在尝试做的事情

$sce.trustAsHtml('<span ng-class="getIconColor('+ myColor +')">')

在我的 HTML 代码中只打印

<span ng-class="red">

但我期待ng-class $sce之前要评估的属性返回它。我的代码有点像这样工作

<span ng-class="red" class="red">

如何做到这一点?

最佳答案

这是一个编译问题,当您渲染需要编译的动态内容时,$sce 服务无法开箱即用。 您可以通过创建自己的强制编译指令来解决此问题。

app.directive('dynamic', function ($compile) {
      return {
        restrict: 'A',
        replace: true,
        link: function (scope, ele, attrs) {
          scope.$watch(attrs.dynamic, function(html) {
            ele.html(html);
            $compile(ele.contents())(scope);
          });
        }
      };
    })

    $scope.trustedContent = function(){
      return $sce.trustAsHtml('<span ng-class="getIconColor('+ myColor +')">');
    }

<div ng-bind-html="trustedContent()" dynamic> </div>

Rendering directives within $sce.trustAsHtml

http://plnkr.co/edit/3CewDscih8diAo4mMSwJ?p=preview

关于javascript - $sce.trustAsHtml 无法按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47453359/

相关文章:

javascript - Angular 2 : How to use css calc() with some component value?

javascript - SyntaxError 结束参数列表的意外标记

javascript - react 编辑表单创建

angularjs - 更新数据时保留 Angular ui 网格中的选择

angularjs - 错误 : $injector:unpr AngularJS Testing mocking object instances

javascript - 滚动上的 Canvas 签名更改鼠标绘制位置

javascript - 在 Javascript 中更改 ExtJS 网格高度

angularjs - UI 路由器 $stateChangeStart 根本不工作

angularjs - 为 Socket.IO 设置 COR header

javascript - 我们可以在 Angular JS 的装饰器中访问 $provide 吗?