我在Angular中有一个HTTP请求,它从Mysql表中提取所有数据。
$http({
method: "POST",
url: "framework/actions/league.php?query=getDivision"
}).success(function(data){
$scope.division = data;
});
数据片段如下所示:
[
{
name: "Someone",
number: "4",
game1: "6",
game2: "2",
score: "8"
},
{
name: "Someone else",
number: "7",
game1: "7",
game2: "3",
score: "10"
},
]
当该数据从HTTP请求返回并被分配到$scope.division
时,这些数字将被视为字符串,这使我在orderBy
中使用ngRepeat
时出现问题。
如何将数字字段视为数字,而无需在forEach
中声明每个字段并使用parseInt()
?是否可以在PHP中执行此操作?如果没有,在Angular javascript中执行它会没问题。
当然,由于名称字段,我无法将每个字段视为数字。
答案 0 :(得分:2)
您可以在发送结果之前使用PHP函数intval()
将字符串转换为数字:
$string = '123';
$number = intval($string);
// 123
$number2 = intval('456');
// 456
或直接在变量语句上转换:
$string = '123';
$number = (int)$string;
// 123
$number2 = (int)'456';
// 456
使用transformResponse
方法在AngularJS 中执行此操作:
$http({
method: "POST",
url: "framework/actions/league.php?query=getDivision",
transformResponse: function(data) {
for (var i=0; i<data.length; i++) {
for(var k in data[i]) {
if (data[i].hasOwnProperty(k)) {
data[i][k] = isNaN(+data[i][k]) ? data[i][k] : +data[i][k];
}
}
}
return data;
},
success: function(data){
$scope.division = data;
}
});