2

我试图阻止 twitter 引导工具提示在元素被禁用时显示。我可以使用以下代码来做到这一点:

app.directive("tooltip",function(){
    return {
          restrict:"A",
          require: 'tooltipDirection',
          link:function(scope,element,attrs,directionController){

               attrs.$observe('ngDisabled',function(){


                   console.log("ngDisabled has changed: " + attrs.ngDisabled);

               });                  

               if(scope.$eval(attrs.ngDisabled)!=true){

                 $(element).attr('title',attrs.tooltip).tooltip({placement:directionController.direction});
               }
           }
     };

});

但是,这仅在页面加载并且元素已被禁用时才有效。我需要一种动态禁用工具提示的方法。例如,如果我单击更改范围变量 (editing_bln) 值的按钮 (edit),则第二个按钮按钮 (save) 通过 ngDisabled 和范围变量 editor_bln 变为禁用。我现在也希望禁用工具提示 - 但事实并非如此。我尝试在链接函数中使用 attrs.$observe,但是,它也在页面加载时被调用,而不是在变量 editor_bln 更改时被调用。这是按钮代码:

<button type="button" ng-class="{'btn-danger':editing_bln}" class="btn btn-mini" style="margin-top:10px;margin-left:20px;" ng-click="editing_bln = !editing_bln"><i tooltip-direction="top" tooltip="Click to Edit Content" ng-class="{'icon-white':editing_bln}" class="icon-pencil"></i></button>

<button ng-disabled="editing_bln" type="button" class="btn btn-mini" style="margin-top:10px;" ng-click="responseAdd()"><i tooltip-direction="top" tooltip="Add response to group."  class="icon-plus"></i></button>

我猜我错过了链接功能中的标记。感谢您的所有回复。

4

1 回答 1

1

您可以尝试做的是将工具提示触发器设置为无法识别的触发器,这实际上会导致工具提示根本不触发:

<button ng-disabled="editing_bln" type="button" class="btn btn-mini" 
        style="margin-top:10px;" ng-click="responseAdd()">
    <i tooltip-direction="top" tooltip="Add response to group." 
       tooltip-trigger={{ editing_bln ? 'none' : 'mouseenter'}}" 
       class="icon-plus"></i>
</button>
于 2013-07-03T18:30:06.633 回答