2016-11-23 1 views
1
$scope.searchObject = { 
    from: 0, 
    hydrate: false, 
    size: 12, 
    sort: 'timestamp:desc' 
}; 

$scope.sort = function(a) { 
    var ascend = a + ':' + 'asc'; 
    var descend = a + ':' + 'desc'; 
    if ($scope.searchObject.sort === ascend) { 
    $scope.searchObject.sort = descend; 
    } 
    if ($scope.searchObject.sort === descend) { 
    console.log('is desc') 
    $scope.searchObject.sort = ascend; 
    console.log('sort : ', $scope.searchObject.sort) 
    } else { 
    $scope.searchObject.sort = descend; 
    } 
}; 
<div class="sort-info"> 
    <label>Sort:</label> 
    <a class="sort-item" ng-click="sort('timestamp')"> Date 
     <div class="sort-arrow" > 
     <i ng-show="searchObject.sort === 'timestamp:asc'" class="fa fa-caret-down"></i> 
     <i ng-show="searchObject.sort === 'timestamp:desc'" class="fa fa-caret-up"></i> 
     </div> 
    </a> 
    <a class="sort-item" ng-click="sort('followers')">Followers 
    <div class="sort-arrow"> 
     <i ng-show="searchObject.sort === 'followers:asc'" class="fa fa-caret-down"></i> 
     <i ng-show="searchObject.sort === 'followers:desc'" class="fa fa-caret-up"></i> 
    </div> 
    </a> 
</div> 

После того, как сортировка по убыванию снова попадает, он не переключится обратно на ASC. Условное событие запускается, а console.logs соответствует сортировке внутри объекта поиска, но вид не изменяется.Угловая рода ПЕРЕКЛЮчЕНИЕ не работает правильно

+0

Можете ли вы предоставить plunker демонстрирующее вашу ошибку? – JimmyBob

ответ

3

нужен else if

$scope.sort = function (a) { 
    var ascend = a + ':' + 'asc'; 
    var descend = a + ':' + 'desc'; 
    if ($scope.searchObject.sort === ascend) { 
     $scope.searchObject.sort = descend; 
    }else if ($scope.searchObject.sort === descend){ 
     console.log('is desc') 
     $scope.searchObject.sort = ascend; 
     console.log('sort : ', $scope.searchObject.sort) 
    } 
    else { 
     $scope.searchObject.sort = descend; 
    } 
    }; 
Смежные вопросы