请参考以下链接

http://codepen.io/anon/pen/fjkcg

的HTML:

<section ng-app="app" ng-controller="MainCtrl">
  <span class="label">Ordered By: {{orderByField}}, Reverse Sort: {{reverseSort}}</span><br><br>
  <table class="table table-bordered">
    <thead>
      <tr>
        <th>
          <a href="#" ng-click="orderByField='firstName'; reverseSort = !reverseSort">
          First Name <span ng-show="orderByField == 'firstName'"><span ng-show="!reverseSort">^</span><span ng-show="reverseSort">v</span></span>
          </a>
        </th>
        <th>
          <a href="#" ng-click="orderByField='lastName'; reverseSort = !reverseSort">
            Last Name <span ng-show="orderByField == 'lastName'"><span ng-show="!reverseSort">^</span><span ng-show="reverseSort">v</span></span>
          </a>
        </th>
        <th>
          <a href="#" ng-click="orderByField='age'; reverseSort = !reverseSort">
          Age <span ng-show="orderByField == 'age'"><span ng-show="!reverseSort">^</span><span ng-show="reverseSort">v</span></span>
          </a>
        </th>
      </tr>
    </thead>
    <tbody>
      <tr ng-repeat="emp in data.employees|orderBy:orderByField:reverseSort">
        <td>{{emp.firstName}}</td>
        <td> <input type="text"
                    ng-init="empx['name_'+$index]=emp['lastName']"
          ng-model="empx['name_'+$index]"/> </td>
        <td>{{emp.age}}</td>
      </tr>
    </tbody>
  </table>
</section>


控制器:

var app = angular.module('app', []);

app.controller('MainCtrl', function($scope) {
  //$scope.orderByField = 'firstName';
  $scope.reverseSort = false;
  $scope.empx={};
  $scope.data = {
    employees: [{
      firstName: 'John',
      lastName: 'F',
      age: '6703114'
    },{
      firstName: 'Frank',
      lastName: 'D',
      age: '665087589'
    },{
      firstName: 'Sue',
      lastName: 'F',
      age: '5271761234'
    },
               {
      firstName: 'Sue',
      lastName: 'F',
      age: '52'
    },{
      firstName: 'Sue',
      lastName: 'F',
      age: '2334564564564564564'
    }]
  };
});


我们在ng-repeat中有文本框控件和datepicker控件。当我对未正确排序的姓氏进行过滤时。我如何对控件内部的集合进行排序。 Age和lastname排序不起作用,因为值在文本框控件内,lastname排序不起作用,由于数字太大,age也不起作用,但是将其表示为字符串。我如何才能实现在所有情况下都能正常工作的排序。

最佳答案

我猜是因为ng-init。除了嵌套的ng-repeats外,您永远不要使用ng-init。

尝试删除ng-init并直接使用您的员工数据的克隆(或原始)-

empx = data.employees.map(item => angular.extend({}, item));


并在模板中使用ng-model="item.lastName"遍历empx

07-24 09:43
查看更多