AngularJS ng-repeat启用对表列的排序

时间:2015-01-14 11:36:43

标签: javascript angularjs ng-repeat

我正在从一个JSONObject数组创建一个表。并希望在列标题点击上启用排序。我的代码如下。

<table>
    <tr ng-repeat-start="record in records | orderBy:columnToOrder:reverse" ng-if="$first">
        <td>S.No</td><td ng-repeat="(key,value) in record " ng-click="columnToOrder=key;reverse=!reverse">{{key}}</td>
    </tr>
    <tr ng-repeat-end >
        <td>{{$index+1}}</td><td ng-repeat="(key,value) in record ">{{value}}</td>
    </tr>
</table>

我的数据看起来像

[
{ Count="85923", Property Name="Name 1"},
{ Count="85933", Property Name="Name 2"},
{ Count="85953", Property Name="Name 3"},
{ Count="85973", Property Name="Name 4"}
]

但是这段代码不起作用。也没有显示错误。请帮我启用此功能。

1 个答案:

答案 0 :(得分:1)

不是使用内联,而是定义一个排序方法,并在点击过程中使用该方法,因为如果变量是在内联中定义的,那么变量是在子范围内创建的,并且它不适用于父ng-repeat - 开始范围。

控制器

 $scope.order =function(key) {
    $scope.columnToOrder=key;
    $scope.reverse= !$scope.reverse
};

HTML

<table>
        <tr ng-repeat-start="record in records | orderBy:columnToOrder:reverse" ng-if="$first">
            <td>S.No</td><td ng-repeat="(key,value) in record " ng-click="order(key)">{{key}}</td>
        </tr>       
        <tr ng-repeat-end>
            <td>{{$index+1}}</td><td ng-repeat="(key,value) in record">{{value}}</td>
        </tr>
    </table>