2014-05-20 54 views
0

我正在尋找編譯鏈接函數執行前的transcluded內容的內容。目前,如果我輸入一個ng-bind-safe,內容將不會被添加到我的鏈接功能之後。在執行指令的鏈接函數之前編譯transcluded內容

我可以做一個scope.$apply()在鏈接功能(和它的工作),但我得到控制檯錯誤,因爲摘要週期已在進行中。

想法?謝謝!

+0

您可以顯示[Plunker(http://plnkr.co/)的您已經嘗試什麼的簡化版本? –

回答

0

在編譯和鏈接階段($ compile和$ link函數)期間,您只能在$ compile函數中訪問您的模板,並在$ link函數中訪問您的範圍和模板。你還沒有訪問渲染模板,因爲它還沒有發生。爲此,您需要設置一個監視表達式,您將爲其提供回調函數。 Angular會讓你知道你正在觀看的價值何時發生變化,並且在這個回調中你可以訪問渲染模板。

此手錶表達式只能在$ link函數內完成,因爲這只是放置在指令中,您可以正確訪問範圍。

下面是一個例子:

app.directive('tmTime', function() { 
    return { 
     restrict: 'A', 
     template: '<div>{{time}}</div><div ng-transclude></div>', 
     transclude: true, 
     link: function (scope, element, attr) { 
      scope.time = 'Its hammer time!'; 
      scope.$watch('time', function(newVal, oldVal) { 
        // this is your call back function 
        // within here, you have access to the rendered template 
        alert(element[0].outerHTML); // (it's hammer time! in first div, transcluded contents in second div) 
      }); 
     } 
    }; 
}); 
相關問題