Angularjs:在角度模板中一起使用linky和ng-bind-html

时间:2017-02-14 06:44:18

标签: angularjs

我有这个指令要编译:

var app = angular.module('mobApp.services');
app.directive('compile', ['$compile', function ($compile) {
    return function(scope, element, attrs) {
        scope.$watch(
            function(scope) {
                return scope.$eval(attrs.compile);
            },
            function(value) {                
                element.html(value);
                $compile(element.contents())(scope);
            }
        );
    };
}])

我在我的模板中使用它:

<p compile="post.details | linky:'_blank'"></p>

如果数据有任何链接,其渲染效果不错,但不会将<b>等文本呈现为&lt;b&gt;。我只想将<b>设为<b>而不将内部文字加粗。

如果我使用ng-html-bind所有工作正常但链接不起作用。如果我使用linky链接工作正常但渲染不起作用。

2 个答案:

答案 0 :(得分:1)

您可以尝试以下更改吗?

var app = angular.module('mobApp.services');
app.directive('compile', ['$compile', function ($compile) {
    return function(scope, element, attrs) {
        scope.$watch(attrs.compile, function(html) {
            element.html(html);
            $compile(element.contents())(scope);
        });
    };
}])

答案 1 :(得分:0)

您可以编写一个自定义过滤器,首先使用linky过滤器并将标签放回到那里

&#13;
&#13;
module.filter('linkyWithHtml', function($filter) {
  return function(value) {
    var linked = $filter('linky')(value);
    var replaced = linked.replace(/\&gt;/g, '>').replace(/\&lt;/g, '<');
    return replaced;
  };
});
&#13;
&#13;
&#13;