2016-03-29 17 views
0

Ich habe eine Texteingabe mit eonasdan datetimepicker. Es gibt einen Bootstrap Tooltip dafür. Ich möchte den Tooltip ausblenden, wenn der Datetimper aktiv ist.

Es gibt CSS-Klasse (.bootstrap-datetimepicker-widget), wenn die Datetime-Picker aktiv ist. Ich habe versucht, die Anzahl der Elemente zu erhalten, die diese CSS-Klasse hat. Ich habe diese Nummer auch beim Debugging durch den Firebug. (Ich schrieb Winkel Richtlinie für Datetimepicker und die Tooltips)

.jsfile

$scope.noOfDateTimePickers = $('.bootstrap-datetimepicker-widget').length; 

    $scope.$watch('noOfDateTimePickers',function(newValue, oldValue){ 
     if(newValue>0){ 
     $('.dateTimePickerToolTips').removeAttr("data-original-titile"); 
     }else{ 
     $('.dateTimePickerToolTips').attr("data-original-titile", $scope.message); 
     } 
    }); 

.html fle

<div datetimepicker> 
    <a class data-toggle="tooltip" ng-attr-title="{{tooltipMessage}}" tooltip> 
    <input type="text" ng-model="startTime"> 
    </a> 
</div> 

jemand mir auf diesem helfen kann, wenn es einige Probleme mit meinem Code?

Antwort

0

Ihr Problem hier ist, dass Ihr jQuery-Aufruf eine einmalige DOM-Suche durchführt, die dann in Ihrem $scope.noOfDateTimePickers gespeichert wird. Da diese DOM-Suche einmal erfolgt, ändert sich Ihre $ scope-Variable niemals, was niemals Ihre Triggerfunktion aufruft.

$scope.noOfDateTimePickers = $('.bootstrap-datetimepicker-widget').length //Called once and is never updated

Meine Empfehlung ist, einen Weg zu finden, von diesem einmaligen jQuery Aufruf wegzukommen die Anzahl der Widgets auf der Seite, um zu bestimmen, und stattdessen hat eine Reihe von Objekten, die Ihre Widgets darstellen und ausführen Logik basierend auf diesem Objekt.

+0

Danke für Ihre Hilfe. Können Sie einen Weg vorschlagen, wie Sie den aktualisierenden Wert für $ scope.noOfDateTimePickers erhalten können? –

+0

Eigentlich habe ich nicht gesehen, dass Sie angegeben haben, dass Sie eine Direktive '' 'datetimepicker''' gemacht haben. Bis Sie diesen Code freigeben, kann das vollständige Problem nicht diagnostiziert werden. Das Hauptproblem besteht darin, dass Sie jQuery verwenden, um das gesamte DOM einmal abzufragen, und dann angular verwenden, um eine Zwei-Wege-Modellbindung für diesen einmaligen Wert durchzuführen. Die einfachere Option könnte darin bestehen, einen jQuery-Aufruf jedes Mal auszuführen, wenn du einen Datepicker ein- oder ausblendest (es macht diese Methoden verfügbar) –

+0

Ja Chris, ich kann die Tooltip-Meldung ausblenden, wenn ich die Datetime-Auswahl aufruft. aber die Tooltip-Nachricht kann nicht erneut angezeigt werden, da es für datetime piker kein Ereignis gibt. Also dachte ich, dass der obige Weg in Ordnung ist. :( –

Verwandte Themen