2

我正在尝试以orderBy角度使用功能,并按顺序订购RollNo但它不起作用请检查下面的代码

脚本

var countryApp = angular.module('countryApp', []);
countryApp.controller('CountryCtrl', function ($scope, $http){
  $http.get('http://localhost/angular/jason/index.php').success(function(data) {
      $scope.countries = data;
      data.RollNo = parseFloat($data.RollNo);
  });
});

JSON

data = [{
    "Name": "Kamal",
    "RollNo": "20",
    "Class": "Class 12"
}, {
    "Name": "Amar",
    "RollNo": "12",
    "Class": "Class 10"
}, {
    "Name": "Rajesh",
    "RollNo": "9",
    "Class": "Class 7"
}]

HTML

 <body ng-controller="CountryCtrl">
  <input type="text" ng-model="name">
    <table>
      <tr>
        <th>Name</th>
        <th>Roll Number</th>
        <th>Class</th>
      </tr>
      <tr ng-repeat="country in countries | filter:name | orderBy:'RollNo'">
        <td>{{country.Name}}</td>
        <td>{{country.RollNo}}</td>
        <td>{{country.Class}}</td>
      </tr>
    </table>
  </body>
4

2 回答 2

1

你这样做data.RollNo = parseFloat($data.RollNo);是行不通的,你需要循环抛出对象并做到这一点。

您需要RollNo先将国家对象的属性转换为数字,然后才能申请orderBy

代码

var newArray = [];
angular.forEach($scope.countries, function(val, index){
  newArray.push(val);
  newArray[newArray.length-1].RollNo = parseInt(newArray[newArray.length-1].RollNo);
});
$scope.countries = newArray;

工作Plunkr

希望这可以帮助你。谢谢。

于 2015-02-19T07:40:39.643 回答
0

好像你的代码不正确

<tr ng-repeat="country in countries | filter:name | orderBy:'RollNo'">

你已经用单引号orderBy:'RollNo'和with 了。RollNo这就是问题

将其更改为

<tr ng-repeat="country in countries | filter:name | orderBy:RollNo">

它会正常工作。

这是演示 Plunker

于 2015-02-19T07:53:44.890 回答