我创建了一个显示工具提示的指令:
app.directive('tooltip',function(){
return{
restrict: 'A',link: function(scope,element,attr){
element.bind('mouseenter',function(e){
scope.setStyle(e);
});
}
}
});
相应的setStyle()函数:
$scope.setStyle = function(e){
$scope.style = {
position: 'absolute',// some other styles
};
$scope.$digest();
};
$scope.style应用于此:
<span ng-style="style">I am a tooltip</span>
这是我看法的一部分,由拥有$scope.style的控制器处理
为什么我必须调用$digest()才能将更改应用到$scope.style,这是先前声明和初始化的?
因为附加到mouseenter事件的回调超出了角度的范围;角度不知道该函数何时运行/结束,所以摘要循环永远不会运行.
调用$digest或$apply可以更改绑定并触发任何手表.