Angular 带有 JSON 连字符的 orderby

Angular orderby with JSON-hyphen

我有一个 JSON 文件,其中一个属性带有连字符。我想使用 ng-click 使用该属性对 JSON 数据进行排序。

这是我的代码:http://codepen.io/anon/pen/zxooMv

<a href="#" ng-click="orderByField='square-miles'; reverseSort = !reverseSort">

不起作用,

也不起作用
<a href="#" ng-click="orderByField=['square-miles']; reverseSort = !reverseSort">

为了让它工作,我应该使用什么语法?

谢谢。

orderBy 在内部使用 $parse 服务,它会将您的 属性 解析为表达式:

square - miles

要解决这个问题,您可以像这样传递自己的 getter 函数:

<tr ng-repeat="state in data.states.state|orderBy:orderBy(orderByField):reverseSort">

在你的控制器中:

$scope.orderBy = function(property) {
  return function(item) {
    return item[property];
  };
};

演示: http://codepen.io/anon/pen/RNoZLw