2015-01-22 3 views
0

정렬 할 수있는 목록에 대해 표시하고있는 화살표의 초기 상태를 설정하려고합니다. 세 개의 열이 있으며 각 열에는 ng-click에 연결된 링크가 있습니다.이 링크를 클릭하면 목록이 정렬됩니다.ordBy의 ng-show의 초기 상태를 각도로 설정합니다.

필요에 따라 작동하지만 클릭 할 때까지 위아래 화살표의 상태가 표시되지 않습니다. 그리고 하나를 클릭하면 다른 하나가 사라집니다. 내가 원하는 것은 사용자가 클릭하기 전에 항상 모든 화살표를 표시하고 각 화살표가 세 가지 중 하나를 클릭 할 때 방향을 변경하는 것입니다.

<a href="javascript:void(0)" ng-click="orderByField='dateAdded'; reverseSort = !reverseSort" class="ghostButtonSort dateLabel flrt">Date Received 
    <span ng-show="orderByField == 'dateAdded'"> 
     <span ng-show="!reverseSort">^</span> 
     <span ng-show="reverseSort">v</span> 
    </span> 
</a> 

그리고 지금 난 그냥 기본 범위의 설정이 있습니다 :

기본 링크는 이것이다

$scope.orderByField = 'conditionId'; 
+0

따라서 처음에는 내 조건에서 true로 설정됩니다. –

답변

2

컨트롤러의 기본값으로 값을 초기화하십시오.

당신이 열 머리글을 클릭하여 정렬 열을 변경하고 옆에 나타나는 캐럿을 클릭하여 정렬 방향을 변경할 수 있습니다이 데모에서 http://jsfiddle.net/kxotrmj6/2/

:

$scope.orderByField = 'dateAdded'; 
$scope.reverseSort = false; 

여기에 작업 정렬 동작을 보여 간단한 바이올린의 활성 정렬 열. 이 달성됩니다 : 나는 캐럿에 대한 FontAwesome 사용하고

HTML

<table id='peopleTable'> 
    <thead> 
     <th> 
      <a href="#" ng-click="sortOn = 'firstName'">First Name</a> 
      <i class="fa" 
      ng-click="sortReverse = !sortReverse" 
      ng-show="sortOn == 'firstName'" 
      ng-class="sortReverse ? 'fa-caret-down' : 'fa-caret-up'"> 
      </i> 
     </th> 
     <!-- snip --> 
    </thead> 
    <tbody> 
     <tr ng-repeat='person in people | orderBy:sortOn:sortReverse'> 
      <td>{{person.firstName}}</td> 
      <td>{{person.lastName}}</td> 
      <td>{{person.favoriteColor}}</td> 
     </tr> 
    </tbody> 
</table> 

컨트롤러

function MyCtrl($scope) { 
    $scope.sortOn = 'lastName'; 
    $scope.sortReverse = false; 

    $scope.people = [ 
     { 
      firstName: 'Joe', 
      lastName: 'Smith', 
      favoriteColor: 'Orange' 
     }, { 
      firstName: 'Jane', 
      lastName: 'Doe', 
      favoriteColor: 'Gray' 
     }, { 
      firstName: 'Zoey', 
      lastName: 'Tester', 
      favoriteColor: 'Blue' 
     }]; 
} 

,하지만 당신은 텍스트 또는 이미지를 사용할 수 있습니다. sortReversesortOn은 모두 컨트롤러에서 초기화되므로 기본값이 있으며 항상 UI에 반영됩니다.

+0

그 덕분에 정말 고맙습니다. 클릭 할 때뿐만 아니라 항상 화살표를 표시하는 방법에 대한 아이디어? –

+0

예. 화살표 엘리먼트에서'ng-show = "sortOn == ???"을 제거 할 수 있습니다.이 옵션을 사용하면 항상 표시되지만, 사용자에게 혼란스러운 상호 작용이 생깁니다 : 칼럼의 화살표를 클릭하십시오 또한 해당 열로 정렬을 바꾸어 줄 수 있습니까? 그렇다면 논리를 약간 수정해야합니다. 화살표에서 'ng-click = "sortReverse =! sortReverse"를 사용하는 대신, 화살표 논리를 컨트롤러의 함수에 입력하여 정렬 할 열을 결정할 수 있습니다. 도움이 필요하면 알려주세요. –

+0

그래도 가능할 것 같습니다. 코드를 빠르게 작성하고 새로운 질문을 게시하겠습니다. 감사합니다 Nate. –

0

같이 NG-초기화를 사용하면 기본 값을 추가를

아래
<a href="javascript:void(0)" ng-click="orderByField='dateAdded'; reverseSort = !reverseSort" class="ghostButtonSort dateLabel flrt">Date Received 
<span ng-show="orderByField == 'dateAdded'"><span ng-show="!reverseSort" ng-init="reverseSort = true">^</span> 
<span ng-show="reverseSort">v</span></span></a> 
+0

내 상황이 개선되지 않았습니다. 그래서 네, 제 질문은 정렬이나 화살표 방향의 초기 상태를 어떻게 보여줄 것인가하는 것입니다. –

-1
<td> 
    <a href="#" ng-click="sortType = 'firstName'; sortReverse = !sortReverse"> 
     firstName : 
     <span ng-show="sortType == 'firstName' && !sortReverse" class="fa fa-caret-down"></span> 
     <span ng-show="sortType == 'firstName' && sortReverse" class="fa fa-caret-up"></span> 
    </a> 
</td> 
관련 문제