【问题标题】:Change OrderBy Angular Icons on Click单击时更改 OrderBy Angular 图标
【发布时间】:2015-04-10 23:58:14
【问题描述】:

我正在与 Angular 合作。

我有一个顶部有一些标题的表格。表格标题内有很少的向下箭头。单击时,这些图标会根据单击其标题的列对表格进行排序。这也是一个切换,所以如果您再次单击列标题,它将在按升序或降序对列进行排序之间切换。

我试图弄清楚当单击列标题并重新使用列(在升序和降序之间切换)时,如何使箭头在两个不同的图像之间切换(一个箭头图像指向上方,另一个指向下方)。我该怎么做?

设置相当简单。这是一个列标题:

<a href="#" ng-click="orderByColumn='duration'; reverseSort = !reverseSort">
   Duration<img ng-src="{{arrowDirection}}" alt="Filter Workshops by Duration of Workshop"/>
</a>

这是我的桌子本身:

<div data-ng-repeat="workshop in workshops | orderBy:orderByColumn:reverseSort">
    <div data-ng-bind="workshop.WorkshopCode"></div>
    <div data-ng-bind="workshop.Title"></div>
    <div data-ng-bind="workshop.StartDate"></div>
    <div data-ng-bind="workshop.duration"></div>
    <div data-ng-bind="workshop.Modality"></div>
</div>

另外,这里有一个代码笔来演示整个事情:http://codepen.io/trueScript/pen/XJLEVQ

所以,我需要一种方法在单击该列时在列标题的 ng-src 值中的两个图像之间切换,以便向上箭头切换为向下箭头,反之亦然。但是,显然在那一列上应该切换方向。

我该怎么做?

【问题讨论】:

    标签: javascript angularjs angularjs-ng-repeat angularjs-ng-click angularjs-orderby


    【解决方案1】:

    1) 添加ng-if 以仅显示箭头(如果按列排序):

    <a href="#" ng-click="orderByColumn='duration'; reverseSort = !reverseSort">
      Duration<img ng-if="orderByColumn==='duration'" ng-src="{{arrowSrc}}" alt="Filter Workshops by Duration of Workshop"/>
    </a>
    

    2) 在控制器中设置箭头图像源:

    $scope.$watch('reverseSort', function (value) {
      if (value) {
        $scope.arrowSrc = 'http://upload.wikimedia.org/wikipedia/commons/3/30/Gtk-go-down.svg';
      } else {
        $scope.arrowSrc = 'http://upload.wikimedia.org/wikipedia/commons/8/88/Gtk-go-up.svg';
      }
    });
    

    见:http://codepen.io/naeramarth7/pen/GgbGLp

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-10-05
      • 1970-01-01
      • 2014-02-16
      • 2018-06-07
      • 2021-12-12
      • 2023-03-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多