2016-04-04 3 views
1

Wie kann ich eine ng-class-Funktion schreiben, die die Klasse "active" nur hinzufügt, wenn der Scope-Wert von "selectedFilter" == der Wert des "type" -Attributs ist ?Ng-Klasse, wenn der Scope-Wert gleich dem Attributwert des Elements ist

HTML:

<li ng-click="selectFilter($event)" ng-class="{'active': selectedFilter == $element.type}" type="portfolio">PORTFOLIO</li> 

Richtlinie Funktion:

link: function(scope, el, attr) { 
     scope.selectFilter = function(filterChosen){ 
      var selectedFilterValue = filterChosen.target.attributes.type.value; 
      scope.selectedFilter = selectedFilterValue; 
     }; 
    } 

Antwort

0

Ich bin nicht sicher, dass es eine gute Möglichkeit, DOM Kontext auf Ihrem Umfang an eine Funktion zu übergeben, ohne den Zugang zu $event wie ng-click hat. Sie könnten auch auf den Einsatz von ng-class verzichten und die Klasse manuell zuweisen, indem Sie auf das Element innerhalb Ihrer ng-click-Funktion zugreifen.

etwas wie folgt aus:

for (var i = 0; i < element[0].children.length; i++) { 
     if (element[0].children[i].type == scope.selectedFilter) { 
     element[0].children[i].className = 'active' 
     } else { 
     element[0].children[i].className = '' 
     } 
    } 
Verwandte Themen