2017-03-20 1 views
1

Ich habe folgende Template-Code:Pass Schlüssel/Wert-Paar Winkelfilter

<div ng-repeat="entry in entries" 
    ng-bind-html="ctrl.entry_statuses[entry] | createEntryURL"> 
</div> 

wo ctrl.entry_statuses ein Objekt in der Steuerung ist, die wie folgt aussehen:

{a: 1, b: 2, c: 3} 

nun die createEntryUrl Filter sieht in etwa so aus:

angular.module('test').filter('createEntryURL', function() { 
    return function(entry){ 
     switch(entry){ 
      case 1: 
       return '<span class="one">' + entry + '</span>' 
      case 2: 
       return '<span class="two">' + entry + '</span>' 
      case 3: 
       return '<span class="three">' + entry + '</span>' 
     } 
    } 
}); 

Wie erwartet, die bestanden entry Variable enthält nur den Wert Teil des Schlüssel/Wert-Paares. Gibt es eine Möglichkeit, sowohl den Schlüssel als auch den Wert zu übergeben, so dass ich den Schlüssel als Zeichenfolge in der <span> und den Wert in der switch Anweisung verwenden kann?

Der resultierende HTML sollte wie folgt aussehen:

<span class="one">a</span> 
<span class="two">b</span> 
<span class="three">c</span> 
+0

haben nicht wenige Dinge. Welches Objekt ist das? {A: 1, b: 2, c: 3}? Kannst du Fiedel machen, wenn möglich? – tanmay

+0

@tanmay Das Objekt ist, was in 'ctrl.entry_statuses' gespeichert ist. Tut mir leid, habe nie versucht Geige/Bunker. – mart1n

Antwort

2

Um filter zusätzliche Parameter an eine Gewohnheit zu führen, können Sie so etwas wie verwenden können dies:

<div ng-repeat="entry in entries" 
    ng-bind-html="ctrl.entry_statuses[entry] | createEntryURL: entry"> 
</div> 

Welche wird zweites Argument in Ihrem filter Funktion. Wie folgt aus:

angular.module('test').filter('createEntryURL', function() { 
    return function(entryStatus, entry){ 
     switch(entryStatus){ 
      case 1: 
       return '<span class="one">' + entry + '</span>' 
      case 2: 
       return '<span class="two">' + entry + '</span>' 
      case 3: 
       return '<span class="three">' + entry + '</span>' 
     } 
    } 
}); 

, die in Folge sollten, was Sie erwarten:

<span class="one">a</span> 
<span class="two">b</span> 
<span class="three">c</span> 
+1

JA !!! Danke, das funktioniert perfekt! – mart1n

+0

@ mart1n froh, ich könnte helfen! – tanmay

-1

den Eingangsparameter Pass zu filtern, wie unten

$scope.map[$scope.key]=$scope.value; 
$scope.key=""; 
$scope.value="";