1

我正在对 prettify 的输出进行后处理以突出显示代码中的某些行。我正在使用这样的代码,效果很好:

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

现在,我想使用 Bootstrap 工具提示,而不是使用标题标签来显示一条消息。上面代码的明显变化是:

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

但是,这不起作用。我想我需要告诉 Angular 重新编译该块,所以它会选择 tooltop 的指令(因此是问题的标题)。

更新- 这是一个显示我正在尝试做的小提琴:http: //jsfiddle.net/6Y4d9/

4

2 回答 2

2

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

$compile(block)(scope)

但是,对于您的任务,您只需要:

scope.$apply()

和:

更改x.propx.attr

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

于 2014-02-28T11:33:27.870 回答
0

如果您需要强制 Angular 重新消化某个范围,您所要做的就是调用:

$scope.$apply();

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

您的另一个选择是致电:

$scope.$apply(function(){
    //put your code in here, and it will run your code and then apply it to the current scope
});
于 2014-02-28T11:34:44.203 回答