2014-06-16 4 views
0

사용자 배열이 있습니다. 처음로드 할 때 성을 기준으로 ng-repeat 명령을 사용하고 싶습니다. 새로운 사용자가 추가 된 후 ng-repeat에 날짜순으로 정렬 된 다음 성이 추가됩니다. 본질적으로 가장 새로운 사용자가 ng-repeat의 맨 위로 밀고 싶습니다. 내 JS에서 조건부로 orderBy Angularjs를 설정하십시오

<th ng-click="menuFilter('lastName', 1);"> 
    <div ng-class='{"menuSort":sortColumn==1}'>Name <span ng-show="share.orderByField == 'lastName'"> 
    </div> 
</th> 

<tr ng-repeat="user in users | orderBy:orderByField:reverseSort"></tr> 

...

_this.sortColumn = 1; 
_this.orderByField = 'lastName'; 
_this.reverseSort = false; 

_this.menuFilter = function(section, column) { 
     _this.orderByField = section; 
     _this.reverseSort = !_this.reverseSort; 
     _this.sortColumn = column; 
}; 

//my attempt to reset the order by created at date 
if(_this.isRefreshing) { 
     _this.orderByField = ['createdAt', 'lastName']; 
} 

기본적으로이 코드는 아무것도하지 않습니다. 나는 HTML에서 한 걸음도 놓치고 있다고 생각한다.

감사합니다.

+0

어떻게/isRefreshing가 업데이트 되었습니까? – gkalpak

답변

0

저는 이것이 자바 스크립트에서 정렬을 정렬 한 다음 orderBy 속성없이 ng-repeat를 사용하는 것이 가장 쉬운 방법이라고 생각합니다.

HTML :

<div ng-repeat="user in users">{{user}}</div> 

<input type="text" ng-model="name"></input> 
<button ng-click="addName()">Add name</button> 

JS :

$scope.users = ["Rusty", "Shackleford", "Dale", "Gribble"]; 
$scope.users.sort(); 

$scope.addName = function() { 
    $scope.users.unshift($scope.name); 
} 

JSFiddle : http://jsfiddle.net/asWF9/2/

이 답변은 귀하의 배열을 정렬하는 데 도움이 될 수 있습니다 : https://stackoverflow.com/a/6712080/3675149

0

"취소]"사용해보십시오 대신 '밀어 넣기'를 클릭하여 배열에 항목을 추가합니다. js의 unshift는 배열의 맨 위에 항목을 삽입 할 수있게합니다.