我希望在链接函数执行之前编译已转换内容的内容。目前,如果我转发ng-bind-safe
,则直到我的链接功能之后才会添加内容。
我可以在链接功能中执行scope.$apply()
(并且它可以正常工作)但由于摘要周期已在进行中,我会收到控制台错误。
思考?谢谢!
答案 0 :(得分: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)
});
}
};
});