2014-01-24 3 views
1

데이터 행을 각도로 표시하는 간단한 앱이 있습니다. 컨트롤러에 데이터가 처음로드 될 때, 행이 내 rows 배열에 추가 된 것과 같은 순서로 나타나길 원합니다. 따라서 orderBy 속성은 처음에는 빈 문자열로 설정됩니다. 열 머리글을 클릭하면 orderBy 속성을 적절한 값으로 설정해야합니다.Chrome의 각도 맞춤 반복 주문

여기 내 피들입니다. http://jsfiddle.net/fLjMR/3/. 여기

function ctrl($scope) 
{ 
    var rows = []; 
    for(var i = 10;i < 30;i++) 
    { 
     rows.push({name: "Fake Name " + i, email: "fakeemail" + i + "@gmail.com"}); 
    } 

    $scope.rows = rows; 
    $scope.orderBy = ""; 
}; 

내 HTML입니다 : 여기

내 JS의 내가 IE와 FF에서이 작업을 수행 할 때 행이 intially가 추가 된 순서대로 표시

<table ng-app ng-controller="ctrl"> 
    <thead> 
     <th><a ng-click="orderBy='name'">Name</a></th> 
     <th><a ng-click="orderBy='email'">Email</a></th> 
    </thead> 
    <tbody> 
     <tr ng-repeat="row in rows | orderBy:[orderBy]"> 
      <td>{{row.name}}</td> 
      <td>{{row.email}}</td> 
     </tr> 
    </tbody> 
</table> 

,하지만 난 할 때 크롬에서는 중간 항목 (이 경우 행 # 20)이 목록의 시작 부분에 나타납니다. 왜 이런거야?

답변

2

당신은 단지 당신이 아니라 배열보다 필터에 단지 문자열을 전달할 수 그때까지 주문 하나 개의 속성이있는 경우 :

<tr ng-repeat="row in rows | orderBy:orderBy"> 
+0

허. 글쎄, 당신이 뭘 알아, 고쳐. 나는 당신이 대괄호를 제거 할 수 있다는 것을 알고 있었지만, 나중에 몇 가지 추가 매개 변수를 추가 할 계획이었습니다. 왜 괄호가 달라질까요? – Dave

+3

각도 광원을 살짝 들여다 보았습니다. orderByFilter는 정렬 조건 자 (콜론 뒤에 오는 것)가 거짓 값이고 정렬되지 않은 배열을 반환하면 단락합니다. 빈 문자열은 거짓 값입니다. 빈 문자열을 포함하는 배열은 위조 값이 아니므로 빈 문자열을 술어로 사용하여 정렬을 시도합니다. –

+0

좋은 물건. 나는 당신이 그것을 못살게 굴 것 같아! 고마워요! – Dave