Announcement

Collapse
No announcement yet.

AngularJs DOM: Zugriff auf element in link

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • AngularJs DOM: Zugriff auf element in link

    Hi,

    ich habe 3 Panels. Wie kann ich in der Direktive abfragen, welcher Panel the current panel ist ? Mit document.getElementById ging es leider auch nicht. Ich habe versucht es gleichzusetzen. Aber das funktioniert nicht. Ist es eigentlich möglich so was abzufragen? Schließlich werden im link alle Elemente aufgerufen.

    HTML Code:
    <div class="container" my-dir></div>
            <div class="panel panel-primary" id='panel1'>
                   <div class="panel-body">
                            Panel content1
                   </div>
             </div>
             <div class="panel panel-primary" id='panel2'>
                   <div class="panel-body">
                            Panel content2
                   </div>
             </div>
             <div class="panel panel-primary" id='panel3'>
                   <div class="panel-body">
                            Panel content3
                   </div>
             </div>
     </div> 
    Code:
    myApp.directive('myDir', function ($rootScope, $interval) {
    return {
    restrict: 'A',
    scope: {
    }
    link: function (scope, element, attrs) {
        $interval(function () {
    
           var look = element; // welcher panel ist jetzt aufgerufen? 
    
    
          }, 3000);
        }
     };
    });
    Danke im Voraus!!
    gruß trap

  • #2
    Du bist auf dem Container Element. Um die Child Elemente musst Du Dich selbst kümmern.
    Zuletzt editiert von fanderlf; 10.10.2015, 13:05.

    Comment


    • #3
      Wie kann ich diese ansprechen?

      Comment


      • #4
        Also typischerweise hat man die Elemente nicht im DOM und spricht diese direkt an, sondern verwendet ein Template und das AngularJS DataBinding wie man es in einem normalen View auch tut. Das heisst Deine Direktive holt sich von irgendwo Daten und gibt diese ans View Template weiter was daraus das DOM rendert.

        In der Doku sind eigentlich saemtliche Anwendungsfaelle beschrieben (https://docs.angularjs.org/guide/directive). Du musst Dir zuerst auch ueberlegen was die Direktive denn ueberhaupt tun soll. Bitte auch immer dran denken, dass eine Direktive vielleicht over engineered ist. Man muss nicht von vorne herein jedes kleine Element, was man vielleicht irgendwann mal wiederverwenden koennte, in eine Direktive packen

        Comment


        • #5
          Ich habe es gelöst:

          mit
          Code:
          this[scope.updateMethod](element);
          Dann für jeden Panel eine update-method hinzugefügt.

          Code:
          data-update-method="'panel1'"
          welches Element in Fokus steht diese Mehtode wird dann aufgerufen. Bei Panel1 in dem Fall die Methode panel1 ()
          Zuletzt editiert von trap; 18.10.2015, 13:20.

          Comment


          • #6
            Danke für das Posten der Lösung

            Comment

            Working...
            X