【问题标题】:AngularJS convert JSON string to JSON object in filterAngularJS在过滤器中将JSON字符串转换为JSON对象
【发布时间】:2014-11-05 11:16:16
【问题描述】:

我正在处理一个缺陷,我将数字数据作为 JSON 对象获取,但考虑到它会自动转换为字符串。结果我无法对其进行排序。

例如,

data = [
{
  num : "1"
},

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

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

{
  num : "22"
}
]

因此,当我使用 orderBy:num 对其进行排序时,它会给出以下输出

1 10 12 2 22 3

由于 Angular 将其转换为字符串,但我想要正确的格式。请帮忙!!

【问题讨论】:

  • 这应该可以。代码的最小更改。 orderBy:+num

标签: angularjs filter


【解决方案1】:

两种解决方案:

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

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

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

【讨论】:

    【解决方案2】:

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

    <!-- in the view -->
    <tr ng-repeat="item in items | orderBy:byNum">
    
    // in the controller
    $scope.byNum = function(item) {
                   return +item.num;
    };
    

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

    【讨论】:

      猜你喜欢
      • 2014-09-25
      • 2019-08-27
      • 2020-05-27
      • 1970-01-01
      • 2021-10-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多