2014-02-28 105 views
1

我后处理prettify的输出以突出显示代码中的一些行。我用这样的代码,它工作得很好:Angular:如何强制重新编译块

x = angular.element('.prettify li:nth-child(' + zz['line'] + ')'); 
x.css('background-color', 'yellow'); 
x.prop('title', zz['message']); 

现在,而不是使用标题标签,显示上线的消息,我想用引导提示。上述代码的明显变化是:

x.prop('tooltip', zz['message']); 

但是,这不起作用。我认为我需要告诉Angular重新编译该块,因此它会提取tooltop指令(因此是问题的标题)。

更新 - 这里是一个小提琴显示什么,我试图做的:http://jsfiddle.net/6Y4d9/

回答

2

重新编译THR块 - 你应该使用$编译服务,像这样:

$compile(block)(scope) 

但是,您的任务只需要:

scope.$apply() 

和:

变化x.propx.attr

http://jsfiddle.net/6Y4d9/1/

+0

谢谢,但是这似乎并没有帮助。我已经添加了一个小提琴的链接,应该更好地解释事情。 – paj28

+0

我已经更新了我的答案,希望它能帮助 –

0

如果你需要强制的角度来重新消化一定的范围内,所有你需要做的就是调用:

$scope.$apply(); 

这将使$范围重新应用自上次应用以来可能发生的任何更改。这些类型的应用只需要在创建交互的初始事件时运行,因为它们位于角度应用程序之外的事件处理程序。

你有另一种选择是拨打:

$scope.$apply(function(){ 
    //put your code in here, and it will run your code and then apply it to the current scope 
}); 
+0

谢谢,但这似乎没有帮助。我已经添加了一个小提琴的链接,应该更好地解释事情。 – paj28