4

Hallo Experten Ich habe eine Direktive 'meine-Tabelle', in der es eine Schaltfläche für Datensatz bearbeiten gibt. Innerhalb Richtlinie Vorlage (HTML-Datei) Ich habe eine SchaltflächeRichtlinie auf fertige Funktion sollte nur einmal ausgeführt

<a data-activates="editScreen" class="button-collapse">Edit 
</a> 

Innen JS-Datei

angular.element(document).ready(function() { 
$('.button-collapse').sideNav({ 
    menuWidth: 450, 
    edge: 'right', 
    closeOnClick: true 
}); 

}) 

I sideNav auf Dokument-Ready-Funktion

Problem ist diese Richtlinie Aufruf in Schleife initialisiert werden soll und Jedes Mal, wenn diese Direktive diesen Code aufruft, wird dies ein Problem verursachen. (So ​​viele Backdrop-Klassen in Sicht, die Seiten-Nav nicht wie erwartet schließen lassen)

Ich möchte, dass dieser Code nur einmal ausgeführt wird.

Wie kann ich dieses Problem lösen?

Vielen Dank im Voraus

Antwort

0

Nur eine echte Richtlinie, so etwas wie folgt verwenden:

angular.module('[moduleName]').directive('buttonCollapse', function(){ 
    return{ 
     restrict:'C', 
     link:function(scope, element, attrs){ 
      $(element).sideNav({ 
       menuWidth: 450, 
       edge: 'right', 
       closeOnClick: true 
      }); 
     } 
    } 
}) 
+0

Sorry, ich bin zu verstehen, nicht in der Lage. Wie kann ich das nutzen? Kannst du bitte ein bisschen mehr erklären. –

+0

Ich bearbeitete, weil ich das '.module' vor '.directive' vergaß. Du hast über eine Direktive gesprochen, also habe ich dir einen gemacht, der zu deinem Bedürfnis passt. Dies bewirkt, dass alle Elemente, die die Klasse "button-collapse" haben, als neue eckige Direktive betrachtet werden und wie in der Link-Funktion beschrieben verfahren werden. Die Link-Funktion wird nur bei der Erstellung des Elements ausgeführt, so dass keine Probleme mehr mit der Ausführung auftreten. – Walfrat

+0

Danke für die Antwort. sehr anständige Lösung. Aber das einzige Problem ist, dass das Seiten-Navy nicht so nah an den Klick kommt, wie es früher war. –

Verwandte Themen