2017-04-10 20 views
0

私は注文があるテーブルを持っており、クリックして2番目のクリックで並べ替えたい。最初のクリックのソートはうまく動作するが、2回目のクリックでは逆の並べ替えは動作しない。2回目のクリックで逆順

<tr> 
    <th><a href="#" ng-click="changeOrder('merchant.id');" ng-dblclick="forDoubleClick('merchant.id')"><abbr title="Merchant ID">M.I.</abbr></a></th> 
    </tr> 

    <tr dir-paginate="item in serverData | orderBy : orderBy | filter:filterData | itemsPerPage: itemPerPageValue"></tr> 

    ... 

私のJSコード

$scope.orderBy = 'value'; 

$scope.changeOrder = function(value) { 
     $scope.orderBy = value; 
    } 

$scope.forDoubleClick = function(value) 
    { 
     $scope.orderBy = value + " : reverse "; 
    } 
+0

[この便利な回答](http://stackoverflow.com/questions/31074578/how-to-reverse-sort-a-column-on-click-using-angularjs) –

+0

ありがとうございますうまく動作します。 –

答えて

0

あなたが$scope.forDoubleClick機能を必要としない HTML私のコードですが、私はちょうどSort順序を決定する変数$scope.currentOrder = 1; 1以上を追加しました。すなわち、%またはremainder0と等しくなると、Ascendingによって並べ替えられ、Descendingの順になります。各click

$scope.currentOrder = 1; 
$scope.changeOrder = function(value) { 
$scope.currentOrder++; 
if($scope.currentOrder % 2 != 0) 
    $scope.orderBy = '-' + value; 
}else{ 
    $scope.orderBy = value; 
} 
+0

私はそれを試したが、逆ソートが間違っていた、私はそれが文字列とintのために異なると思うが、私はそれらが両方のために働いている必要があります私の並べ替えオブジェクト(intまたは文字列)になるだろうかわからない。 –

+0

あなたはフィドルを作成できますか? – manish

0

インクリメント$scope.currentOrderあなたはこのような何かを試すことができますか?代わりにng-click="changeOrder('merchant.id');"

$scope.sortOrder = 'ASC'; 
$scope.changeOrder = function(value) { 
    if($scope.sortOrder === 'ASC') { 
     $scope.orderBy = value; 
     $scope.sortOrder = 'DSC'; 
    } else { 
     $scope.orderBy = value + " : reverse "; 
     $scope.sortOrder = 'ASC'; 
    } 
} 
+0

解析エラーが発生しました。 https://docs.angularjs.org/error/$parse/syntax?p0=:&p1=is%20an%20unexpected%20token&p2=13&p3=merchant.id%20:%20reverse&p4=:%20reverse –

+0

私は同じエラーを試しました –

+0

ng-click = "changeOrder(merchant.id);"から一重引用符を削除できますか?そしてさらに試みる? –

0

は同じ

ng-click="changeOrder(merchant.id);"ng-dblclickのために行く置きます。

+0

私はそれを試しました。動作しませんでした –

関連する問題