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
    第一项总是有选定的类。我修改了我的答案,也许我应该做第二个答案,哦,好吧