2017-02-14 83 views
0

我有這個指令編譯:Angularjs:在角模板中使用linky和NG綁定,HTML一起

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鏈接工作正常,但渲染不起作用。

回答

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

您可以編寫自定義過濾器在第一次使用linky過濾器,把標籤回在那裏

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