2016-05-13 5 views
0

Ich muss einen jquery Code in eine eckige Komponente einfügen, diese jquery war im html so nicht gute Praxis.Wie man einen jquery Code in der Winkelanweisung anwendet

Ich habe versucht, eine neue Funktion dort zu erstellen und meinen jquery Code einzufügen, die jquery es funktioniert sehr gut, aber ich weiß nicht warum, die Funktion Link ist jetzt kaputt und funktioniert nicht.

Ich bin neu mit eckigen und js so kann ich nicht gut verstehen, kann jemand helfen, dies zu lösen? erklären, was im Code falsch ist und ich die Funktion über

gebrochen habe Danke.

jQuery-Code habe ich versucht,

$('#close, #menu-toggle').click(function(e) { 
      e.preventDefault(); 
      $('#wrapper').toggleClass('toggled'); 
     }); 

Winkel Datei anzuwenden:

angular.module('test').directive('leftBar', [ 
     'leftBarService', 
     function leftBar(leftBarService) { 
     'use strict'; 

     var 
      scope = { 
      onLeafNode: '=' 
      }; 

     function link($scope, $element) { 
      $element.leftBar({ 
      speed: 1000, 
      useDynamicLoading: false, 
      onLeafNodeReched: $scope.onLeafNode 
      }); 

     } 

     function menu ($scope, $element){ 
      $('#close, #menu-toggle').click(function(e) { 
      e.preventDefault(); 
      $('#wrapper').toggleClass('toggled'); 
      }); 
     } 

     return { 
      restrict: 'A', 
      scope: scope, 
      link: link, 
      link:menu, 
      templateUrl: 'app/test/leftBar/leftBar.html' 
     }; 
     } 

    ]); 
+0

Warum haben Sie 2 Link-Funktionen? Sonst sieht der Code gut aus. Was ist die Absicht Ihres Codes? Möchten Sie diesen Code jedes Mal ausführen, wenn die Anweisung zum ersten Mal geladen wird? Haben Sie auch die Referenz von JQuery aufgenommen? – Anand

+0

Wenn ich das Stück jquery Code in den Funktionslink einfügen, funktioniert perfekt, aber ich muss eine Funktion für das Menü erstellen und beide ausführen. Verstehen? – Raduken

+1

schreibe 2 Funktionen, die das Verhalten kapseln und den internen Link aufrufen. Es kann nur 1 Link-Funktion sein – Anand

Antwort

1

In dem zurückkehr Ziel der Richtlinie Sie zwei Eigenschaften link s verwenden. Sie müssen den von Ihnen erwähnten jQuery-Code in die bereits deklarierte Verknüpfungsfunktion einfügen und nur eine link-Eigenschaft im zurückgegebenen Objekt verwenden.

angular.module('test').directive('leftBar', [ 
    'leftBarService', 
    function leftBar(leftBarService) { 
    'use strict'; 

    var 
     scope = { 
     onLeafNode: '=' 
     }; 

    function link($scope, $element) { 
     $element.leftBar({ 
     speed: 1000, 
     useDynamicLoading: false, 
     onLeafNodeReched: $scope.onLeafNode 
     }); 

     menu(); 
    } 

    function menu() { 
     $('#close, #menu-toggle').click(function(e) { 
     e.preventDefault(); 
     $('#wrapper').toggleClass('toggled'); 
     }); 
    } 

    return { 
     restrict: 'A', 
     scope: scope, 
     link: link, 
     templateUrl: 'app/test/leftBar/leftBar.html' 
    }; 
    } 

]); 
+0

ok genau dort wird funktionieren, aber ich muss diesen Code in eine Funktion setzen verstehen? Ich kann die Link-Funktion nicht einfügen. – Raduken

+0

Sie können es in eine Funktion einfügen und diese Funktion innerhalb der Link-Funktion aufrufen. Ich aktualisiere den Code, um zu zeigen, wie dies zu tun ist –

+0

danke, nur eine Sache Menü sollte oben links auf Link geschrieben werden? Wie werde ich Menü aufrufen, wenn die Funktion unten ist? habe geladen, bin ich richtig? – Raduken

0

Wenn mit Winkel starten, ist es immer besser, Ihre gute Praktiken in JQuery hinter sich zu lassen, weil alles, was eine schlechte Praxis in Winkel wird und es ist besser, eine Winkel Richtlinie zu verwenden (jemand geschrieben haben, was Sie wollen bereits), als JQuery innerhalb einer Direktive zu verwenden. Für was Sie versuchen, können Sie die Kollatierungsrichtlinie in https://angular-ui.github.io/bootstrap/ beziehen.

Verwandte Themen