2016-12-22 15 views
0

orderByフィルタを使用して配列のリストをフィルタリングする必要があります。私の場合、複数のorderByを使用することは機能しません。ただ1つのorderByで正常に動作します。それをどうやって実装するのですか?AngularJsで配列を持つ複数orderByフィルタを適用するにはどうすればよいですか?

img1

//here we create the product array and display the array in the HTML page. 
var app=angular.module("App",[]); 
app.controller("Cont",function($scope){ 

     var product = [ 
          {:"110",ename:"Harry",esalary:"25000",ecity:"Agar"}, 
          {pid:"109",ename:"potter",esalary:"11000",ecity:"US"}, 
          {pid:"101",ename:"Peter",esalary:"1200",ecity:"London"}, 
          {pid:"104",ename:"Janifer",esalary:"12000",ecity:"Bejing"}, 
          {pid:"103",ename:"Selena",esalary:"35000",ecity:"England"}, 
          {pid:"102",ename:"Lokesh",esalary:"32500",ecity:"Malwa"}, 
          {pid:"108",ename:"Gotm",esalary:"8910",ecity:"Ujain"}, 
          {pid:"106",ename:"Soni",esalary:"16000",ecity:"bhopal"}, 
         ]  
         $scope.products=product; 
        }); 
<html> 
<head> 
    <script src="angular.min.js"></script> 
    <script src="controller.js"></script> 
</head> 
<body ng-app="App" ng-controller="Cont">  
     <form align="center"> 
     <table align="center" border="2"> 
      <thead> 
       <tr> 
        <th>pid</th> 
        <th>ename</th> 
        <th>esalary</th> 
        <th>ecity</th> 
       </tr> 
      </thead> 
      <tbody> 
       <tr ng-repeat="x in products | orderBy:['pid','ename','esalary']"> 
        <td>{{x.pid}}</td> 
        <td>{{x.ename | uppercase}}</td> 
        <td>{{x.esalary }}</td> 
        <td>{{x.ecity}}</td> 
       </tr> 
      </tbody> 
     </table> 
    </form> 
    </body 
    </html> 
+0

あなたは私の答えをチェックしましたか? –

答えて

0

var app = angular.module("App", []); 
 
app.controller("Cont", function($scope) { 
 
    var product = [ 
 
    { 
 
    'pid': "110", 
 
    'ename': "Harry", 
 
    'esalary': "25000", 
 
    'ecity': "Agar" 
 
    }, 
 
    { 
 
    'pid': "109", 
 
    'ename': "potter", 
 
    'esalary': "11000", 
 
    'ecity': "US" 
 
    }, 
 
    { 
 
    'pid': "101", 
 
    'ename': "Peter", 
 
    'esalary': "1200", 
 
    'ecity': "London" 
 
    }, 
 
    { 
 
    'pid': "104", 
 
    'ename': "Janifer", 
 
    'esalary': "12000", 
 
    'ecity': "Bejing" 
 
    }] 
 
    $scope.products = product; 
 
    }); 
 
<!DOCTYPE html> 
 
<html> 
 
<head> 
 
    <script data-require="[email protected]" data-semver="1.4.7" src="https://code.angularjs.org/1.4.7/angular.js"></script> 
 

 
</head> 
 
<body ng-app="App" ng-controller="Cont"> 
 
    <form align="center"> 
 
    <table align="center" border="2"> 
 
     <thead> 
 
     <tr> 
 
      <th>pid</th> 
 
      <th>ename</th> 
 
      <th>esalary</th> 
 
      <th>ecity</th> 
 
     </tr> 
 
     </thead> 
 
     <tbody> 
 
     <tr ng-repeat="x in products | orderBy:'pid' | orderBy:'ename'"> 
 
      <td>{{x.pid}}</td> 
 
      <td>{{x.ename | uppercase}}</td> 
 
      <td>{{x.esalary }}</td> 
 
      <td>{{x.ecity}}</td> 
 
     </tr> 
 
     </tbody> 
 
    </table> 
 
    </form> 
 
    </body> 
 

 
</html>

+0

ここで、ecityはフィルタリングされ、pidはフィルタリングされません。 – Kapil707

+0

@ Kapil707いいえ、orderbyは行全体に適用されるため、pidで注文することはできません。あなたは何らかの角度テーブルの指示を使うことができます。 – Sajeetharan

0

これを試してみてください:

<tr ng-repeat="x in products | orderBy:['pid','ename']"> 
      <td>{{x.pid}}</td> 
      <td>{{x.ename | uppercase}}</td> 
      <td>{{x.esalary }}</td> 
      <td>{{x.ecity}}</td> 
     </tr> 
+0

なぜあなたは 'orderBy'から' esalary'を削除しましたか? – Mistalis

+0

それは働いていません。私はMistalis先生に同意します。なぜあなたは勲章をorderByから削除しましたか? – Kapil707

関連する問題