有条件地订购 - AngularJs

时间:2015-01-06 07:45:35

标签: javascript 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'}]"

将从下拉列表中选择上面看到的最近添加的字符串以选择过滤器选项

如果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}]">

您将看到列表项

1 个答案:

答案 0 :(得分:0)

首先,您的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"