2017-09-08 6 views
0

角度の新しいjです。私は、AJAX呼び出しからこの配列を取得していますAngular JS - 含まれている番号に基づいてフィルタ

$scope.experience_list = ['6-7','0-1','4-5','2-3','8-10','10+', 'na']; 

: は、私のような配列を持っています。したがって配列の値は任意の順序で指定されます。

私はそれは

0-1 years 
10+ years 
2-3 years 
4-5 years 
6-7 years 
8-10 years 
Unknown 

として結果を私に与えている。しかし、私が好きなこの配列を表示する

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script> 
 
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.4/angular.min.js"></script> 
 
<div ng-app=""> 
 
<ul ng-init="experience_list = ['6-7','0-1','4-5','2-3','8-10','10+', 'na']"> 
 
    <li ng-repeat="experience in experience_list | orderBy:'toString()' track by $index"> 
 
    <a href="javascript:void(0)"><i class="fa fa-square-o" aria-hidden="true"></i> <span ng-if="experience == 'na'">Unknown</span> <span ng-if="experience != 'na'">{{experience}} years</span></a> 
 
</li> 
 
</ul> 
 
</div>

をNG-繰り返し使用しています:

0-1 years  
2-3 years 
4-5 years 
6-7 years 
8-10 years 
10+ years 
Unknown 

ご意見やご協力をいただければ幸いです。

答えて

0

ちょうどこの

ng-repeat="experience in experience_list track by $index" 

あなたが取得している右出力

ここだもう一つのアプローチを行う場合

var a = ['0-1','2-3','4-5','6-7','8-10','10+', 'na'] 
$scope.experience_list = a.map(function(obj){ 
    return{ 
     order : obj.split('-')[0] || obj, 
     real : obj 
    }; 
}); 
html 
<ul> 
    <li ng-repeat="experience in experience_list | orderBy:-'order'"> 
    <a href="javascript:void(0)"><i class="fa fa-square-o" aria-hidden="true"></i> <span ng-if="experience == 'na'">Unknown</span> <span ng-if="experience != 'na'">{{experience.real}} years</span></a> 
    </li> 
</ul> 

ただ、新しい値を削除し、プッシュするとき

+0

yaが..しかし、私はまた、要素 –

+0

を追加、削除のように私もそれに問題が表示されていないいくつかの操作を行っております。その場合、問題のある正確なコードを入力してください – Rakeschand

+0

私のコードを編集しました –

1

がTHIS TRY同じ形式を使用してみてください:あなたはそれで$インデックスを渡すことで、関数を呼び出す任意の関数を実行したい場合は

<li ng-repeat="experience in experience_list | orderBy:$index track by $index"> 
+0

私はまた、要素の追加を削除するような操作を行っています –

+1

あなたの問題についての詳細を教えてください。要素の追加/削除が難しいところはどこですか? –

+0

私は自分のコードを編集しました –

1

を。 $ indexを使用すると、関数内の配列から値が抽出されます。

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script> 
 
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.4/angular.min.js"></script> 
 
<div ng-app=""> 
 
<ul ng-init="experience_list = ['0-1','2-3','4-5','6-7','8-10','10+', 'na']"> 
 
    <li ng-repeat="experience in experience_list"> 
 
    <a href="javascript:void(0)"><i class="fa fa-square-o" aria-hidden="true"></i> <span ng-if="experience == 'na'">Unknown</span> <span ng-if="experience != 'na'">{{experience}} years</span></a> 
 
</li> 
 
</ul> 
 
</div>

0

私は解決策を見つけました。それは私を助けた。カスタムフィルタを作成する必要はありません。詳細Intl.Collator

ため

だけでソートそれ、

$scope.experience_list = ['6-7','0-1','4-5','2-3','8-10','10+', 'na']; 
var collator = new Intl.Collator(undefined, {numeric: true, sensitivity: 'base'}); 
$scope.experience_list.sort(collator.compare); 
関連する問題