orderBy 过滤器只工作一次
orderBy filter works only once
正在尝试根据用户的选择按升序或降序对数字数组进行排序。
这是我的代码 -
Order by:
<select ng-model="orderCriteria">
<option value="false">ASC</option>
<option value="true">DESC</option>
</select>
<table border="2">
<th>Number</th>
<tr ng-repeat="num in [1, 5, 3, 6, 45, 20, 7, 2] | filter: query | orderBy:num:orderCriteria">
<td>{{num}}</td>
</tr>
</table>
页面加载时,数字会自动按升序排列。
当我打开下拉列表并选择 DESC 或 ASC 时,table 将其顺序更改为降序(无论我选择什么)。
从那一刻起,无论我选择什么,顺序都是降序排列!
我做错了什么?
谢谢!
为了能够轻松更改订单方向,您可以简单地使用 +/-
修饰符:
<tr ng-repeat="num in numbers | orderBy: orderCriteria">
<td>{{num}}</td>
</tr>
其中 orderCriteria
现在变为:
<select ng-model="orderCriteria">
<option value="+">ASC</option>
<option value="-">DESC</option>
</select>
来自 orderBy
关于谓词表达式的文档:
An expression can be optionally prefixed with + or - to control ascending or descending sort order (for example, +name or -name). If no property is provided, (e.g. '+') then the array element itself is used to compare where sorting.
您的代码不起作用的原因是 select 框中的 true/false 值是在过滤器表达式中始终产生 'true' 的字符串。
您可以尝试这样的操作:
<tr ng-repeat="num in [1, 5, 3, 6, 45, 20, 7, 2] | orderBy:num:(orderCriteria == 'true')">
<td>{{num}}</td>
</tr>
正在尝试根据用户的选择按升序或降序对数字数组进行排序。
这是我的代码 -
Order by:
<select ng-model="orderCriteria">
<option value="false">ASC</option>
<option value="true">DESC</option>
</select>
<table border="2">
<th>Number</th>
<tr ng-repeat="num in [1, 5, 3, 6, 45, 20, 7, 2] | filter: query | orderBy:num:orderCriteria">
<td>{{num}}</td>
</tr>
</table>
页面加载时,数字会自动按升序排列。 当我打开下拉列表并选择 DESC 或 ASC 时,table 将其顺序更改为降序(无论我选择什么)。
从那一刻起,无论我选择什么,顺序都是降序排列!
我做错了什么?
谢谢!
为了能够轻松更改订单方向,您可以简单地使用 +/-
修饰符:
<tr ng-repeat="num in numbers | orderBy: orderCriteria">
<td>{{num}}</td>
</tr>
其中 orderCriteria
现在变为:
<select ng-model="orderCriteria">
<option value="+">ASC</option>
<option value="-">DESC</option>
</select>
来自 orderBy
关于谓词表达式的文档:
An expression can be optionally prefixed with + or - to control ascending or descending sort order (for example, +name or -name). If no property is provided, (e.g. '+') then the array element itself is used to compare where sorting.
您的代码不起作用的原因是 select 框中的 true/false 值是在过滤器表达式中始终产生 'true' 的字符串。
您可以尝试这样的操作:
<tr ng-repeat="num in [1, 5, 3, 6, 45, 20, 7, 2] | orderBy:num:(orderCriteria == 'true')">
<td>{{num}}</td>
</tr>