有条件地排序 - AngularJs

Ordering conditionally - AngularJs

我一直在尝试做的是有条件地设置用于订购我的 ng-repeat 值的值。

我尝试做的是采用用于添加 ng-classes 的条件方法,如下所示:

ng-class="{'active':item.selected}" 

并将其与日期 orderBy 方法相结合:

ng-repeat="item in filterPosts | orderBy:['yyyy','mm','dd']"

这将导致以下任一情况,但不幸的是,这些都不起作用。

ng-repeat="item in items | orderBy: [{('yyyy','mm','dd'):(sortBy=='Recently Added')}]"
ng-repeat="item in items | orderBy: [{'yyyy':(sortBy=='Recently Added')}]"
ng-repeat="item in items | orderBy: [{'yyyy':sortBy=='Recently Added'}]"

上面看到的最近添加的字符串将从下拉列表select编辑到select过滤器选项

如果 SortBy = true

ng-repeat="item in items | orderBy: [{'yyyy':sortBy}]"

关于如何使这项工作有任何想法,或者这是否可能?

更新

这是一个fiddle

如您所见,它不起作用。

如果您取消注释此行:

<!--li ng-repeat="item in activities"> -->

并注释掉这一行:

<li class="item_wrap" ng-repeat="item in activities | orderBy: [{'yyyy':recent}]">

您将看到列表项

首先,您的 select 必须有 ng-change 指令来分配 sortBy 参数。如下图

<select ng-init="sortBy='+date'" ng-model="sortType" ng-change="sortBy= sortType=='Recently Added' ? '-date':sortType=='Name' ? '+name':'+date';">
     <option>Recently Added</option>
     <option>Name</option>
</select>

那么你的转发器指令应该是这样的

 ng-repeat="item in items | orderBy:sortBy:true"