如何使用 Angular.js 对 json 中的整数值进行排序
how to sort interger value from json using Angular.js
我正在尝试使用 angular 中的 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>
你正在做的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;
希望对您有所帮助。谢谢。
您的代码似乎不正确
在
<tr ng-repeat="country in countries | filter:name | orderBy:'RollNo'">
您使用了 orderBy:'RollNo'
和 RollNo
并用单引号括起来。就是这个问题
将其更改为
<tr ng-repeat="country in countries | filter:name | orderBy:RollNo">
它会正常工作。
这里是 Demo Plunker
我正在尝试使用 angular 中的 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>
你正在做的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;
希望对您有所帮助。谢谢。
您的代码似乎不正确
在
<tr ng-repeat="country in countries | filter:name | orderBy:'RollNo'">
您使用了 orderBy:'RollNo'
和 RollNo
并用单引号括起来。就是这个问题
将其更改为
<tr ng-repeat="country in countries | filter:name | orderBy:RollNo">
它会正常工作。
这里是 Demo Plunker