AngularJS只对ng-repeat表中的前两项进行排序
AngularJS only Sorting First Two Items from ng-repeat Table
所以我试着用Angular做一个简单的排序表。在阅读了ng-book和各种文章之后,我已经接近了,但我一直有同样的问题。
我有一个7列100行的表。每当我单击要排序的列的标题时,它只排序前两个条目,而不是全部100个条目。此外,我只能对它进行一次排序(即它不会返回到原来的顺序,除非我刷新页面出于某种原因)
我不太确定我做错了什么。任何帮助都是非常感激的!
下面是我的代码:VIEW HTML:
<div ng-controller="currentTradeshowsController">
<table class="table table-hover tabled-bordered">
<tr>
<th>
<a ng-click="changeSorting('eventName')">Tradeshow</a>
</th>
<th>
<a>Division Lead</a>
</th>
<th>
<a>Division(s) Participating</a>
</th>
<th>
<a>Location</a>
</th>
<th>
<a>Details</a>
</th>
<th>
<a>Start</a>
</th>
<th>
<a>End</a>
</th>
</tr>
<tr ng-repeat="items in events | orderBy:sort.column:sort.descending">
<td><a href="#/tradeshowdetails/{{$index}}">{{items.Event.eventName}}</a></td>
<td>{{items.Event.tradeshow.divisionLead.firstName}} {{items.Event.tradeshow.divisionLead.lastName}}</td>
<td>{{items.Event.divisionParticipating}}</td>
<td>{{items.Event.location.address2}}</td>
<td>{{items.Event.tradeshow.highleveShowDetails}}</td>
<td>{{items.Event.startDate}}</td>
<td>{{items.Event.endDate}}</td>
</tr>
</table>
</div>
CONTROLLER JAVASCRIPT:
app.controller('currentTradeshowsController', function($scope, eventsService){
eventsService.getData().then(function(returnMessage){
$scope.events = returnMessage.data;
});
$scope.sort = {
column: '',
descending: false
};
$scope.changeSorting = function(column) {
var sort = $scope.sort;
if (sort.column == column) {
sort.descending = !sort.descending;
} else {
sort.column = column;
sort.descending = false;
}
};
});
您的ng-click
可以简化为
<td ng-click="sort.descending=!sort.descending;sort.column='items.Event.eventName'">Event Name</td>
这样你就不需要任何东西,除了你的JSON数组在控制器中,你不需要一个函数来改变排序列。下面是一个简化的小提琴:http://jsfiddle.net/ANEA6/2/
编辑:修改一个更长的数组。对所有行进行排序:http://jsfiddle.net/ANEA6/4/
修改你的数据。我只对第一列进行了排序:http://jsfiddle.net/ANEA6/7/应该是:
<tr ng-repeat="event in events | orderBy:sort.column:sort.descending">
<td><a href="#/tradeshowdetails/{{$index}}">{{event.eventName}}</a></td>
<td>{{event.tradeshow.divisionLead.firstName}} {{event.tradeshow.divisionLead.lastName}}</td>
<td>{{event.divisionParticipating}}</td>
<td>{{event.location.address2}}</td>
<td>{{event.tradeshow.highleveShowDetails}}</td>
<td>{{event.startDate}}</td>
<td>{{event.endDate}}</td>
</tr>
?
相关文章:
- 将两个Json提要合并为一个,并按时间排序
- 如何对两个嵌套对象进行排序
- 效率:整数数组的一个子集中两个项之间的最大差值
- 在对数组进行排序时删除重复项
- 在两个不同的数组中查找匹配项 - javaScript
- 我可以在 angularJS v1 中每次使用 ng 重复项两个吗?
- 单击已连接的可排序项时查找列表文本
- 使用Rails进行敏捷Web开发:将两(2)项添加到仓库推车中,而不是一(1)项
- 根据angularjs中画布上的位置对列表项进行排序
- 根据搜索项按相关性合并和排序多个JavaScript数组
- 防止数组项被选中两次
- jqgrid:基于两列排序
- 为什么Array.有时对某些值对进行两次排序比较
- 如何添加排序函数条件,将所有空白项排序到列表的末尾?
- 在添加时对数组项排序
- 更好的检查数组中两项之间的方法
- 使用数据表按两列排序(不能读取property ' style '未定义)
- 有没有一种方法可以使用jquery或javascript将数组中的重复项排序到一个组中
- AngularJS的ng-repeat每两项使用分隔符
- AngularJS只对ng-repeat表中的前两项进行排序