我有一组用户,我想在首次加载时按姓氏排序ng-repeat。添加新用户后,按日期添加ng-repeat,然后添加姓氏。基本上我希望最新的用户被推到ng-repeat的顶端。
<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>
在我的JS ......
_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 :(得分:0)
我认为最简单的方法是在纯javascript中对数组进行排序,然后使用不带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
答案 1 :(得分:0)
尝试使用&#34; unshift&#34;而不是推动&#39;将项添加到数组中。 js中的unshift使我们能够将一个项目插入到数组的顶部。