0
我正在尋找編譯鏈接函數執行前的transcluded內容的內容。目前,如果我輸入一個ng-bind-safe
,內容將不會被添加到我的鏈接功能之後。在執行指令的鏈接函數之前編譯transcluded內容
我可以做一個scope.$apply()
在鏈接功能(和它的工作),但我得到控制檯錯誤,因爲摘要週期已在進行中。
想法?謝謝!
我正在尋找編譯鏈接函數執行前的transcluded內容的內容。目前,如果我輸入一個ng-bind-safe
,內容將不會被添加到我的鏈接功能之後。在執行指令的鏈接函數之前編譯transcluded內容
我可以做一個scope.$apply()
在鏈接功能(和它的工作),但我得到控制檯錯誤,因爲摘要週期已在進行中。
想法?謝謝!
在編譯和鏈接階段($ 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)
});
}
};
});
您可以顯示[Plunker(http://plnkr.co/)的您已經嘗試什麼的簡化版本? –