根据 Angular 中的标题对表格中单列中的数据进行排序

Posted

技术标签:

【中文标题】根据 Angular 中的标题对表格中单列中的数据进行排序【英文标题】:Sort data in Single column on the table based on the Heading in Angular 【发布时间】:2017-12-04 11:05:10 【问题描述】:

我正在做的是在一个表中对单个或多个列执行排序操作。假设我们有一个这样的表。

点击标题 1 时,只需对数据 1 和数据 2 进行排序。点击标题 2 时,需要对数据 3 和数据 4 进行排序。

已经在 Angular 中为表格实现了简单排序,但不知道如何在单个列中使用两组数据来实现这一点。

即使尝试单独的表,因为 Angular 中的 order by 基于数组中的键,当单击标题 1 时,两者(数据 1、2、3 和 4)都会更新。

ng-repeat 用于形成表格

谁能指出我正确的方向(在 Angular 1.x 上)?

Sample Fiddlehttp://jsfiddle.net/ANEA6/13/

【问题讨论】:

如果您发布您的 html,它会更容易提供帮助 ^^ 和 javascript 提供一些代码以了解您的代码的实际状态 已添加小提琴@TonySamperi 和其他人 好的,我去看看 【参考方案1】:

问题是你使用相同的变量来处理相反的事情!

<div ng-controller="MyCtrl">
  <table class="table">
    <tr class="heading">
      <td ng-click="reverse1=!reverse1;predicate1='id'">id</td>
    </tr>
    <tr ng-repeat="user in users | orderBy:predicate1:reverse1">
      <td>user.id</td>
    </tr>
    <tr class="heading">
      <td ng-click="reverse2=!reverse2;predicate2='id'">id</td>
    </tr>
    <tr ng-repeat="user in users | orderBy:predicate2:reverse2">
      <td>user.id</td>
    </tr>
  </table>
</div>

你可以检查这个工作小提琴 ==> http://jsfiddle.net/ANEA6/17/

【讨论】:

【参考方案2】:

为什么不为每个&lt;tr&gt; 创建一个单独的范围变量,其中&lt;td&gt; 内部有id,就像这样

<div ng-controller="MyCtrl">
  <table class="table">
      <tr><td ng-click="reverse1=!reverse1;predicate1='id'">id</td></tr>
      <tr ng-repeat="user in users | orderBy:predicate1:reverse1">
          <td>user.id</td>
      </tr>
      <tr><td ng-click="reverse2=!reverse2;predicate2='id'">id</td></tr>
      <tr ng-repeat="user in users | orderBy:predicate2:reverse2">
          <td>user.id</td>
      </tr>
    </table>
</div>

控制器

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

//myApp.directive('myDirective', function() );
//myApp.factory('myService', function() );

function MyCtrl($scope) 
    $scope.users = [
        id:1,
        id:2

    ]

这应该适用于您的情况,因为我看不到 &lt;td&gt;id 是动态生成的。它使用id 硬编码为两行。 id &lt;tr&gt; 后面的另一个 &lt;tr&gt; 是使用 ng-repeat 动态生成的,所以这应该没问题。

为简单起见,这里是JSFIDDLE的工作链接

【讨论】:

这是一个巧合,我们都有相同的变量名。我没有复制你的。这是我们发布的同一时间。

以上是关于根据 Angular 中的标题对表格中单列中的数据进行排序的主要内容,如果未能解决你的问题,请参考以下文章

SQL 根据单列的不同值选择记录

如何为 Google 表格中单列中的每个值设置数字格式取决于值?

根据单列中的值拆分大文件(AWK)

Angular 表中的排序方向和顺序(升序、降序)

踩坑QTableView之一:单列编辑

如何对pyspark数据框中的单列进行重塑操作?