繁体   English   中英

有条件地订购-AngularJs

[英]Ordering conditionally - AngularJs

我一直试图做的是有条件地设置值,以便通过它们来排序ng-repeat值。

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

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'}]"

如上所示,最近添加的字符串将从下拉列表中选择以选择过滤器选项

如果SortBy = true

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

关于如何进行这项工作的任何想法,或者是否可行?

更新

这是一个小提琴

如您所见,它不起作用。

如果您取消注释此行:

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

并注释掉这一行:

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

您将看到列表项

首先,您的选择必须具有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"

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM