2017-11-13 11 views
0

Ich versuche aria-current Attribut in einem Anker nur zu erstellen, wenn die Anker href gleich dem aktuellen Windows-Pfad ist. Grundsätzlich möchte ich aria-current="page" WENN der Anker in Frage hat eine href gleich dem Fenster in Ansichten Pfad. Und ich möchte kein aria-current Attribut erstellen, wenn der fragliche Anker kein href hat, das dem Fenster im Ansichtspfad entspricht.So erstellen Sie ein Attribut bedingt in AngularJS

Gibt es eine Möglichkeit, eine bedingte Anweisung inline zu schreiben, die ein Attribut in AngularJS (Angular1) erstellt oder nicht erstellt?

Antwort

1

Ich denke, es kein "Inline-Weg" ist, dies zu tun, aber für diesen Fall können Sie eine Richtlinie

Hier ein Beispiel erstellen:

yourmodule.directive('myexampleblabla', function() { 
    return { 
    link: function(scope, elem, attr) { 
     if(elem.attr('href') === windows.location.href){ 
      elem.attr('aria-current', true) 
     } 
    }, 
    restrict: 'E', 
    }; 
}); 

HTML:

<a href="sample/path#a123" myexampleblabla>Your Anchor</a> 

Achtung: Dieser Code ist noch nicht getestet, sollte aber ein paar Schritte nach vorne bringen.

Für jeden Fall, in dem Sie das DOM in einer eckigen Anwendung ändern möchten, sollten Sie eine Direktive erstellen. Weitere Informationen zu Richtlinien finden Sie hier: https://docs.angularjs.org/guide/directive

0

Lösung: Verwenden Sie ng-attr, um ein Attribut inline bedingt zu erstellen.

Zum Beispiel <div ng-attr-alt="{{<conditional statement> ? '<value to set attr to if true>' : undefined }}"

Wenn die bedingte Anweisung true dann nicht das Attribut wird nicht erstellt werden, die nicht definierten Wert setzt diese.

Verwandte Themen