2017-11-03 1 views
0

Ich bin ein Filter-Tokenize implementieren, die ein optionales Argument für das Trennzeichen nehmen kann.geben optionales Argument mit Filtermethode Winkel

Standardmäßig erzeugt der Filter eine durch Kommas getrennte Zeichenfolge der einzelnen Zeichen der angegebenen Eingabe. Wenn das Trennzeichen angegeben wird, werden die einzelnen Zeichen in der Eingabezeichenfolge durch das angegebene Trennzeichen getrennt.

Kein Token zur Verfügung gestellt: (tokenize löst zu einem Komma):

{{"hello world"|tokenize}} 

Ergebnisse in:

h,e,l,l,o,,w,o,r,l,d 

Token wird bereitgestellt:

{{"hello world"|tokenize:'#'}} 

Ergebnisse in:

h#e#l#l#o##w#o#r#l#d. 

Das Problem ist, ich bin nicht in der Lage, optionale Argument übergeben und erhalten es, um die Zeichenfolge auf der Grundlage der optionalen Trennzeichen zu trennen.

-Code für html:

<!doctype html> 
<html ng-app="myApp"> 
    <head> 
     <script src="angular.js"></script> 
     <script src="filter.js"></script> 
    </head> 
    <body> 
     <div ng-controller='HelloController'> 
     <label>Input</label><input ng-model='greeting'><br><br> 
     <label>Delimeter</label><input ng-model='delimeter'><br> 
     <p>{{greeting | tokenize}}(default)</p> 
     <p>{{greeting| tokenize:arg1}}(with Option)</p> 
     </div> 
    </body> 
</html> 

und mein filter.js Code ist:

angular.module('myApp', []) 
    .controller('HelloController', function($scope) { 
     $scope.greeting = "Angular is Awesome"; 
     //$scope.delimeter="#"; 
    }) 
    .filter('tokenize', function() { 
     return function(value) { 
      if (angular.isString(value)) { 
       var abc = []; 
       abc = value.split(''); 
       value = abc.join(); 
       return value; 
      } else { 
       return value; 
      } 
     };  
    }); 
+0

schau dir @emed an swer unten. "deklariere einen anderen Parameter in deiner Filterfunktion". Danach split auf den optionalen Parameter oder auf ''. – o4ohel

+0

ok, wenn ich zwei Werte eins mit Standardbegrenzer und andere, die mit optionalen Argument kommt, zurückgeben muss. Wie kann das gemacht werden? – Rahila

+0

wie ich muss zwei Ausgaben geben: h, e, l, l, o ,, w, o, r, l, d (Standard) und die andere h # e # l # l # o ## w # o # r # l # d. – Rahila

Antwort

0

einfach einen anderen Parameter in Ihre Filterfunktion deklarieren:

<p>{{"Angular is Awesome" | tokenize:'arg1'}}(with Option)</p> 
            ^Dont forget quotes if it isn't a variable 


.filter('tokenize', function() { 
    return function (value, optionalArg) { 
     console.log(value); // Angular is Awesome 
     console.log(optionalArg); // arg1 

     if (angular.isString(value)) { 
      var abc = []; 
      abc = value.split(''); 
      value = abc.join(optionalArg); //pass the separator to join 
      return value; 
     } else { 
      return value; 
     } 

https://docs.angularjs.org/guide/filter

+0

A, n, g, u, l, a, r,, i, s,, A, w, e, s, o, m, e (Standard) A, n, g, u, l, a , r,, i, s,, A, w, e, s, o, m, e (mit Option) ist die Rendite, die ich bekomme. Wie gebe ich die Option zurück, indem ich arg1 anwende. so bedeutet es, wie zwei verschiedene Werte von Funktion zu




{{greeting | tokenize}}(default)

{{greeting| tokenize:'arg1'}}(with Option)

Rahila

+0

@Rahila übergeben das Trennzeichen an die Join-Funktion, bearbeitet, um diesen Teil anzuzeigen – emed

Verwandte Themen