在AngularJS中按列标题对表进行排序

时间:2018-03-22 14:59:50

标签: javascript angularjs

有一个对象数组,我可以从中获取数据:

$ctrl.myArray = [
            {name: "name1", id: 1, children: ["one", "two"]},
            {name: "name2", id: 2, children: ["two"]},
            {name: "name3", id: 3, children: ["one", "two"]},
            {name: "name4", id: 4, children: ["one"]}
];

将数据放在表中工作正常,当我想按列添加排序功能时,问题出现了。

在控制器的构造函数中,我添加了这个:

this.orderByField = 'name';
this.reverseSort = false;

首先我尝试仅为name列添加排序功能,这是代码:

<thead>
    <tr>
      <th>
        <a href="#" ng-click="orderByField='name'; reverseSort = !reverseSort">
            Name <span ng-show="orderByField == 'name'"><span ng-show="!reverseSort">^</span><span ng-show="reverseSort">v</span></span>
            </a>
      </th>
      <th>Id</th>
      <th>Children</th>
    </tr>
</thead>

<tbody>
    <tr ng-repeat="rows in $ctrl.myArray track by $index | orderBy:orderByField:reverseSort">
        <td>
            {{$ctrl.myArray[$index].name}}
        </td>
        <td>{{$ctrl.myArray[$index].id}}</td>
        <td><span ng-repeat="rows in $ctrl.myArray[$index].children track by $index">
            {{$ctrl.myArray[$parent.$index].children[$index]}}</span>
        </td>
    </tr>
</tbody>

这是错误消息:

  

[orderBy:notarray]预期数组但收到:0

不知道为什么数组为0.任何想法?

1 个答案:

答案 0 :(得分:1)

因此,该问题与track by $index有关。你放错了地方。

我已经为它做了那个。以下是链接:

{{3}}