AngularJS将JSON字符串转换为过滤器中的JSON对象

时间:2014-11-05 11:16:17

标签: angularjs filter

我正在处理一个缺陷,我将数字数据作为JSON对象获取,但在视图中它自动转换为字符串。因此,我无法对其进行排序。

例如,

data = [
{
  num : "1"
},

{
  num : "2"
},
{
  num : "3"
},

{
  num : "10"
},
{
  num : "12"
},

{
  num : "22"
}
]

所以当我用orderBy:num对它进行排序时,它给出了我的输出

1 10 12 2 22 3

由于Angular将其转换为字符串,但我想以适当的格式。请帮忙!!

2 个答案:

答案 0 :(得分:0)

两种解决方案:

  1. 从JSON对象内的值中删除引号。

  2. 将每个值转换为整数或浮点数。

  3.     angular.forEach($scope.data, function (d) {
            d.age = parseFloat(d.age);
         });

答案 1 :(得分:0)

您可以编写自己的自定义排序函数将文本转换为整数,然后在视图中使用它进行排序。像这样:

<!-- in the view -->
<tr ng-repeat="item in items | orderBy:byNum">

// in the controller
$scope.byNum = function(item) {
               return +item.num;
};

我建议你看看为什么JSON数据从数字转换为文本。这不是视图中应该发生的事情。