Javascript AngularJS仅对ng repeat表中的前两项进行排序
所以我试图用Angular创建一个简单的可排序表。在读了ng的书和各种文章之后,我已经接近了,但我一直有同样的问题 我有一个7列100行的表。每当我单击要排序的列的标题时,它只对前两个条目进行排序,而不是对所有100个条目进行排序。此外,我只能对它进行一次排序(即,除非我出于某种原因刷新页面,否则它不会返回到其原始顺序) 不太清楚我做错了什么。非常感谢您的帮助 我的代码是这样的: 查看HTML:Javascript AngularJS仅对ng repeat表中的前两项进行排序,javascript,angularjs,Javascript,Angularjs,所以我试图用Angular创建一个简单的可排序表。在读了ng的书和各种文章之后,我已经接近了,但我一直有同样的问题 我有一个7列100行的表。每当我单击要排序的列的标题时,它只对前两个条目进行排序,而不是对所有100个条目进行排序。此外,我只能对它进行一次排序(即,除非我出于某种原因刷新页面,否则它不会返回到其原始顺序) 不太清楚我做错了什么。非常感谢您的帮助 我的代码是这样的: 查看HTML: <div ng-controller="currentTradeshowsController
<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>
这不应该是:
<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>
{{event.tradeshow.divisionLead.firstName}{{event.tradeshow.divisionLead.lastName}
{{event.division}
{{event.location.address2}
{{event.tradeshow.highleveShowDetails}
{{event.startDate}
{{event.endDate}
?您的
ng单击可以简化为
<td ng-click="sort.descending=!sort.descending;sort.column='items.Event.eventName'">Event Name</td>
事件名称
这样,除了控制器中的JSON数组之外,您不需要任何东西,也不需要函数来更改排序列。这是一把简化的小提琴:
编辑:摆弄较长的数组。所有行都将被排序:
编辑:摆弄你的数据。我只对第一列进行了排序:eventName
不是项的属性。ng repeat中的项
是否应该命名为事件
并在第一列中显示{event.eventName}
。这次我用
标签
做了这件事,然后排序按钮看起来像:Tradeshow
我遇到了同样的问题,这让我想知道是否不是排序,而是数组呈现的顺序?我又试了一次。仍然有同样的问题,但我开始找出问题所在。对于Tradeshow
来说,我将谓词设置为什么并不重要。我可以将谓词设置为'blahblahblah',它仍然只对前两行进行排序。如果我想按EvestNoad属性排序,我应该设置什么谓词?在这里你做了什么不同的操作,它看起来与我的标记相同吗?我在你的小提琴中尝试了什么,但是我仍然有同样的两行。我的小提琴在某种意义上是骗人的,分类名称按字母顺序把“Bob”放在中间,排序ID总是把“2”放在中间。你能分享你正在使用的实际JSON吗,或者用你的代码扩展我的小提琴?我的可以工作,但我不能在你的东西上测试它。这里有一个指向我用作随机数据的JSON端点的链接。是的,就是这样。需要将谓词设置为Event.eventName谢谢!太好了:)你介意把答案标为正确吗?这样其他人也会受益
<td ng-click="sort.descending=!sort.descending;sort.column='items.Event.eventName'">Event Name</td>