javascript - 在 AngularJS 中对表列进行排序

标签 javascript angularjs angularjs-scope angularjs-filter angular-filters

以下用于对表列进行排序的代码不起作用。我收到一条错误消息:

Error: $injector:unpr Unknown Provider

Unknown provider: orderbyFilterProvider <-

查看:

<table class="table table-bordered table-hover">
  <thead>
    <tr>
      <th><a href="" ng-click="reverse=!reverse;order('lname', reverse)">Lastname</a></th>
      <th><a href="" ng-click="reverse=!reverse;order('fname', reverse)">Firstname</a></th>
      <th><a href="" ng-click="reverse=!reverse;order('maxAge', reverse)">Age</a></th>
    </tr>
  </thead>
  <tbody>
    <tr ng-repeat="item in filteredItems = (nameslist | orderBy:predicate)">
      <td>{{ item.lname }}</td>
      <td>{{ item.fname }}</td>
      <td>{{ item.maxAge }}</td>
    </tr>
  </tbody>
</table>

Ctrl:

//Get request to REST API
$scope.nameslist = resService.getAll();

//sort function
var orderby = $filter('orderby');

$scope.order = function (predicate, reverse) {
   $scope.nameslist = orderby($scope.nameslist, predicate, reverse);
};

/* default */
$scope.order('-maxAge', false);

资源服务:

...
return {
   getAll: function () {
      return requestService.name.query();
   },
...
}

如何修改排序函数?

最佳答案

这是我尝试过的

更新了 html。

<body ng-controller="testCtrl">

    <table class="table table-bordered table-hover">
  <thead>
    <tr>
      <th><a href="" ng-click="reverse=!reverse;predicate = 'lname'">Lastname</a></th>
      <th><a href="" ng-click="reverse=!reverse;predicate = 'fname'">Firstname</a></th>
      <th><a href="" ng-click="reverse=!reverse;predicate = 'maxAge '">Age</a></th>
    </tr>
  </thead>
  <tbody>
    <tr ng-repeat="item in nameslist | orderBy:predicate:reverse">
      <td>{{ item.lname }}</td>
      <td>{{ item.fname }}</td>
      <td>{{ item.maxAge }}</td>
    </tr>
  </tbody>
</table>
</body>



app.controller("testCtrl",['$scope','$filter',function($scope,$filter){
        $scope.nameslist = [{maxAge :112,fname:'first1' ,MiddleName: 'middle1',lname:'last1'},
      {maxAge :15,fname:'first2' ,MiddleName: 'middle1',lname:'last1'},
      {maxAge :11,fname:'first3' ,MiddleName: 'middle2',lname:'last2'},
      {maxAge :14,fname:'first4' ,MiddleName: 'middle3',lname:'last1'}
      ];

不需要自定义过滤器。

这是Plunker

关于javascript - 在 AngularJS 中对表列进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31074421/

相关文章:

javascript - 如何将 instanceof 与当前上下文中未定义的类一起使用?

c# - 如何在发送请求后停止加载页面?

javascript - 如何使用 jQuery 代码解决此 setCustomValidity 解除绑定(bind)问题

javascript - 如何使用 angularJs 加载类的值

angularjs - 从 AngularJS 中的隔离范围/指令接收广播和调用 Controller 函数?

javascript - 使用嵌套 ng-option 时如何从下拉列表中将选定的值纳入范围?

javascript - 如何找到一个网页元素相对于另一个网页元素的位置?

angularjs - 在 Heroku 上使用 Gulp 部署 Angular 应用程序 : app crashed

javascript - Angular 错误: $parse:ueoe Unexpected End of Expression for a couple of expressions

javascript - 为什么更改姓氏时模型中的全名没有更新?