Trigger Bootstrap工具提示,设置空值

时间:2014-03-28 15:46:04

标签: javascript jquery angularjs twitter-bootstrap twitter-bootstrap-tooltip

我正在使用AngularJS和Twitter Bootstrap(TB),来自Angular I使用验证工具和来自TB的一些好东西,比如工具提示。这就是HTML呈现的方式:

<input 
    type="text" 
    id="company_taxId" 
    ng-model="company.taxId" 
    required="required" 
    class="input ng-scope ng-pristine ng-valid-maxlength ng-valid-minlength ng-valid-pattern ng-invalid ng-invalid-required" 
    style="width:485px;" 
    ng-minlength="9" 
    maxlength="9" 
    ng-maxlength="9" 
    ng-pattern="/^[\d{9}$]/" 
    placeholder="Ej: 458965879" 
    tooltip="" 
    wv-def="" 
    tooltip-trigger="focus" 
    tooltip-placement="right" 
    wv-cur="" 
    wv-err="Este valor debería ser un número válido." 
    wv-req="Este campo es requerido" 
    wv-min="Este valor debería tener exactamente 9 caracteres" 
    wv-max="Este valor debería tener exactamente 9 caracteres"
>

这就是我的指令对Angular方面的看法:

app.directive('validated', function() {
    return {
        restrict: 'A',
        link: function(scope, element, attrs) {

            element.keyup(function(){
                parent = $('.tooltip');
                target = parent.find('.tooltip-inner'); 
                if( element.hasClass('ng-invalid-required') ){
                    target.html(attrs.wvReq);
                    attrs.wvCur = attrs.wvReq;
                    parent.addClass('error');
                }
                else if( element.hasClass('ng-invalid-email') ){
                    target.html(attrs.wvEml);   
                    attrs.wvCur = attrs.wvEml;
                    parent.addClass('error');   
                }
                else if( element.hasClass('ng-invalid-minlength') ){
                    target.html(attrs.wvMin);   
                    attrs.wvCur = attrs.wvMin;
                    parent.addClass('error');   
                }
                else if( element.hasClass('ng-invalid-maxlength') ){
                    target.html(attrs.wvMax);   
                    attrs.wvCur = attrs.wvMax;
                    parent.addClass('error');
                }
                else if( element.hasClass('ng-invalid') ){
                    target.html(attrs.wvErr);
                    attrs.wvCur = attrs.wvErr;
                    parent.addClass('error');   
                }
                else{
                    target.html(attrs.wvDef);
                    attrs.wvCur = attrs.wvDef;
                    parent.removeClass('error');    
                }
            });

            element.focus(function(){
                attrs.tooltip = attrs.wvCur;
                setTimeout(function(){
                    parent = element.next('.tooltip');  
                    target = parent.find('.tooltip-inner'); 
                    target.html( ( attrs.wvCur != "" ? attrs.wvCur : attrs.wvDef ) );
                    console.log()
                    if( attrs.wvCur != attrs.wvDef && attrs.wvCur != "" )
                        parent.addClass('error');
                },5);
            });
        }
    };
});

您可能会注意到tooltip为空但我用它来触发其他消息。如果tooltip为空,则其他消息未显示,是否存在以空工具提示值触发TB工具提示的任何方式?

1 个答案:

答案 0 :(得分:1)

我不明白为什么你没有使用angular-ui工具提示,你可以设置工具提示清空并激活它,就像那样

<div tooltip=" " placement right></div>

请查看此文档here

修改

对于解决此问题的最简单方法,还有一些角度带的可能性,您是否尝试过@SparoHawk建议的哈希码?无论如何,我建议你说你的网页设计师区域看看周围的角度模块,他们可以使用很多解决方案,除了另一个解决方案可能是将值设置为工具提示绑定它到你喜欢这个值的数组

<div tooltip='{{value}}'></div>

的javascript

var value=["",something, something else]
var function=function(){
    if(something happens){
        $scope.value=value[0];
    }
    else if(something else happens){
        $scope.value=value[1]
    }
    else{
        $scope.value=value[2]
    }
}

var value=["",something, something else]
var function=function(){
    if(something happens){
        $scope.value=value[0];
    }
    else if(something else happens){
        $scope.value=value[1]
    }
    else{
        $scope.value=value[2]
    }
}


这样才有可能