Angular:如何强制重新编译块

时间:2014-02-28 11:28:36

标签: angularjs twitter-bootstrap-3 prettify

我正在对美化的输出进行后处理,以突出显示代码中的某些行。我正在使用这样的代码,工作正常:

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

现在,我不想使用title标签在行上显示消息,而是使用Bootstrap工具提示。上述代码的明显变化是:

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

然而,这不起作用。我认为我需要告诉Angular重新编译块,所以它选择了tooltop的指令(因此问题的标题)。

更新 - 这是一个显示我想要做的事情的小提琴:http://jsfiddle.net/6Y4d9/

2 个答案:

答案 0 :(得分:2)

重新编译thr块 - 您应该使用 $ compile 服务,如下所示:

$compile(block)(scope)

但是,只需要你的任务:

scope.$apply()

x.prop更改为x.attr

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

答案 1 :(得分:0)

如果您需要强制角度来重新消化某个范围,您只需要打电话:

$scope.$apply();

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

您拥有的另一个选择是致电:

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