2017-01-10 156 views
0

我試着包裝我圍繞以下問題頭:包含HTML之前指令渲染

  1. 我有我渲染使用ng-bind-html
  2. 我設法改變一個給定的佔位符(HTML中的字符串)一個HTML字符串與指令(或更多)。例如,我有:[placeholder]test[/placeholder],並用<my-directive></my-directive>取代某個功能。

這種方法需要使某些內容動態化。

當呈現html字符串時,我注意到該指令丟失,我明白,但有沒有辦法來呈現它並使指令功能?

PS:

  • 試圖渲染它作爲一個正常的字符串,但是HTML轉義
  • 使用$sce.trustAsHtml()
  • 嘗試,因爲該指令不會被觸發
+0

只是要指令,將字符串作爲參數代替一些文本,編譯結果並將其添加到DOM。 –

+0

感謝您的提示,這是我第一次做這樣的實現 –

回答

0

我我不能申請$compile(element.contents())(scope);設法做到這一點做到以下幾點:

  1. 添加指令在html:

    <my-directive update-data-trigger="someObject.content" data="someObject"></<my-directive>

  2. 的指令:

app.directive("myDirective", function ($compile) { return { replace:true, restrict: "E", scope: { //Data holds the html in the content attribute data: '=', updateDataTrigger: '=' }, link: function ($scope, element) { //Add a watcher to refresh data because the loaded data passed is async $scope.$watch('updateDataTrigger', function(){ //Check if data passed has been loaded with our desired object if($scope.updateDataTrigger != null) { //Do some content manipulation here //Append directives to the content as well //render as html element.html(data.content); $compile(element.contents())($scope); } }); } } });

+0

'數據'可以相當大嗎? 100-200-1000個符號 - 看這樣的字符串看起來很奇怪,應該很慢,所以最好加入特殊變量來觀察:。 –

+0

嗯,你再次合適。感謝您的反饋!!! –