2017-11-03 7 views
0

デリミタのオプションの引数を取ることができるフィルタtokenizeを実装しています。フィルタメソッドを使用してオプション引数を指定する角度

デフォルトでは、フィルターは指定された入力の個々の文字のコンマ区切り文字列を生成します。区切り文字が提供されている場合、入力文字列の個々の文字は、指定された区切り文字で区切られます。

ませトークンはありません:(トークン化がカンマに解決):提供

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

トークン:

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

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

結果で

{{"hello world"|tokenize}} 

結果

問題は、オプションの引数を渡して、オプションの区切り文字に基づいて文字列を区切ることができないことです。

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> 

と私のfilter.jsコードは次のとおりです。

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

@emedを見て下に広がる。 "あなたのフィルタ関数で別のパラメータを宣言してください"。その後、オプションのparamまたは ''で分割します。 – o4ohel

+0

私はデフォルトの区切り文字とオプションの引数に付属している他の2つの値を返さなければならない場合はどうすればよいですか?どのようにそれを行うことができます。 – Rahila

+0

私はh、e、l、l、o、w、o、r、l、d(デフォルト)ともう一つのh#e#l#l#o#w#o #r#l#d。 – Rahila

答えて

0

はちょうどあなたのフィルタ機能で別のパラメータを宣言します。

<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(デフォルト) A、n、g、u、l、a (オプション付き)は私が返すものです。どのようにarg1を適用してオプションを返すのですか?したがって、関数から2つの異なる値を返す方法を意味します。




{{greeting | tokenize}}(default)

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

Rahila

+0

@Rahilaは、結合関数にセパレータを渡し、その部分を示すように編集します – emed

関連する問題