Angularjs 如何将类设置为使用orderBy排序的ng repeat中的第一项?
我有一个未排序的项目列表,我使用Angularjs 如何将类设置为使用orderBy排序的ng repeat中的第一项?,angularjs,angularjs-ng-repeat,angularjs-ng-class,Angularjs,Angularjs Ng Repeat,Angularjs Ng Class,我有一个未排序的项目列表,我使用orderBy按名称字母数字排序 <li class="ticker-li" ng-repeat="ticker in tickers | orderBy:'ticker'" ng-class="{'selected':ticker.selected}"> <div class="ticker" ng-click="unselectAll(); ticker.selected = !ticker.sel
orderBy
按名称字母数字排序
<li class="ticker-li"
ng-repeat="ticker in tickers | orderBy:'ticker'"
ng-class="{'selected':ticker.selected}">
<div class="ticker"
ng-click="unselectAll(); ticker.selected = !ticker.selected;
selectTicker(ticker);
revealTickerOptions()">
{{ticker.ticker}}
</div>
^这非常有效,直到我需要添加orderBy
,以便项目按字母顺序显示:
但是,我发现它锁定了第一个始终具有类的项
ng-class="{'selected':$first || ticker.selected}"
稍微修改一下我的代码,我可以让其他按钮在单击时获得该类,但是$first
项仍然保留在该类中
ng-class="{'selected':$first || ticker.selected}"
在我的控制器中,这是我的取消选择所有功能,它不适用于“已选择”:$first
:
vs.unselectAll = function() {
for (var i = 0; i < vs.tickers.length; i++) {
vs.tickers[i].selected = false;
}
};
vs.unselectAll=function(){
对于(变量i=0;i
标记或控制器中的代码应该如何更新以解决此问题?试一试,我不确定它如何读取排序方式上的$index,但请去掉$first thing并将此init语句放在其中
<li class="ticker-li"
ng-repeat="ticker in tickers | orderBy:'ticker'"
ng-init="$index ? ticker.selected = false : ticker.selected = true"
ng-class="{'selected':ticker.selected}" ng-click="unselectFirst($index)">
我认为这是一个灰色地带之间的黑客与否,你不是技术上的别名属性在ng初始化,但我认为这是一条细线。另一种解决方案是对控制器中的数组进行排序,文档中有一个按字母顺序排序的示例,对不起,在上面添加了我的ng click代码:
ng click=“unselectAll();ticker.selected=!ticker.selected;selectTicker(ticker);revealTickerOptions()”
啊,我想这已经结束了,还没开始工作,但是。。。vs.tickers[0]。启用“按alpha排序”时,选定项不是第一项。是否要抛出一个plunker?我有点困惑为什么for循环没有处理好它,我会尝试,好的,是的问题是$first
我的unselectAll函数将所有项目的选中状态变为false。但是,由于检查是“选定的”:$first第一项总是有选定的类。我修改了我的答案,也许我应该做第二个答案,哦,好吧