我是Angular的新手,我仍然试图了解可能的情况,所以这可能是一个明显答案的问题,但我在网上找不到相关的答案。
我有switch statement
决定返回orderBy
的值,orderBy
根据返回的值正确排列对象列表。但是,我希望我default
的{{1}}案例确保switch statement
对对象列表的顺序不执行任何操作。
但是,orderBy
似乎有默认功能,如果您没有给它任何值,就会以自己的方式对列表进行排序。
我尝试了各种方法让它发挥作用:
orderBy
不返回任何内容,default: return;
使用其默认排序。
orderBy
不返回任何内容,default:break;
使用其默认排序
orderBy
和default: return [];
我认为一个空数组会被识别为一个参数,并且可以解决这个问题,但它仍然使用默认排序。
return ['']
我认为传递一些值(reverse:false)会覆盖默认排序,但是我得到了一个错误。
我还将它设置为使用default: return [':false'];
- 我认为它只是按照数组的原始索引排序。这没用。
有没有人知道我可以传递给
orderBy: $index track by $index
的论据来让它去做 什么都没有到列表,或我如何覆盖默认排序。
答案 0 :(得分:1)
您必须将orderBy
属性值设置为null
。
propertyName = null
或
HTML中的 ng-repeat="friend in friends | orderBy:null"
文档没有直接提到这一点,但有一个例子通过将属性字符串替换为普通的null来禁用排序。
<button ng-click="propertyName = null; reverse = false">Set to unsorted</button>
<hr/>
<table class="friends">
<tr>
<th>
<button ng-click="sortBy('name')">Name</button>
<span class="sortorder" ng-show="propertyName === 'name'" ng-class="{reverse: reverse}"></span>
</th>
<th>
<button ng-click="sortBy('phone')">Phone Number</button>
<span class="sortorder" ng-show="propertyName === 'phone'" ng-class="{reverse: reverse}"></span>
</th>
<th>
<button ng-click="sortBy('age')">Age</button>
<span class="sortorder" ng-show="propertyName === 'age'" ng-class="{reverse: reverse}"></span>
</th>
</tr>
<tr ng-repeat="friend in friends | orderBy:propertyName:reverse">
<td>{{friend.name}}</td>
<td>{{friend.phone}}</td>
<td>{{friend.age}}</td>
</tr>
</table>
答案 1 :(得分:1)
通过不触发orderBy是暂时的唯一方法。
E.g。
ng-repeat="x in (wantToOrder ? (array | orderBy) : array)"