2017-04-10 99 views
0

我有订单的表,我想排序他们点击和反向排序第二次click.On第一次单击排序工作正常,但第二次点击反向排序不工作。它引发解析exception.Here是我的代码 HTML第二次点击相反的顺序

<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

从[这个有用的SO答案]得到帮助(http://stackoverflow.com/questions/31074578/how-to-reverse-sort-a-column-on-click-using-angularjs) –

+0

谢谢你是工作正常。 –

回答

0

你不需要$scope.forDoubleClick功能,我只是增加了一个变量$scope.currentOrder = 1;这将决定Sort顺序。即,如果%remainder等于0Ascending排序,否则按Descending顺序排序。

,并增加$scope.currentOrder每个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.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-click="changeOrder(merchant.id);"同样适用于ng-dblclick

+0

我试过了。不工作 –