避免Angular.js orderBy默认排序
Avoid Angular.js orderBy default sorting
我是 Angular 的新手,我仍在努力思考可能发生的事情,所以这可能是一个有明显答案的问题,但我在网上找不到任何相关答案.
我有一个 switch statement
决定从 return 到 orderBy
的哪个值,并且 orderBy
根据值 [=47= 正确地排列对象列表]编辑。但是,我希望 switch statement
的 default
案例确保 orderBy
对对象列表的顺序没有任何影响。
但是,orderBy
似乎具有默认功能,如果您不给它任何值,它会按照自己的方式对列表进行排序。
我尝试了各种方法让它工作:
default: return;
return什么都没有,orderBy
使用它的默认顺序。
default:break;
return什么都没有,orderBy
使用其默认顺序
default: return [];
和 return ['']
我认为一个空数组会被识别为一个参数,并且会解决这个问题,但它仍然使用默认顺序。
default: return [':false'];
我认为在 (reverse:false) 中传递一些值会覆盖默认顺序,但我收到了一个错误。
我也将它设置为使用 orderBy: $index track by $index
- 我认为它只会按数组的原始索引对其进行排序。这没有用。
Does anyone know an argument I can pass into orderBy
to get it to do
nothing at all to a list, or how I can override the default sorting.
您必须将 orderBy
属性 值设置为 null
。
propertyName = null
在 JS
或
ng-repeat="friend in friends | orderBy:null"
在 HTML
文档没有直接提及这一点,但有一个示例通过将 属性 字符串替换为普通空值来禁用排序。
<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>
暂时不触发orderBy是唯一的办法
例如
ng-repeat="x in (wantToOrder ? (array | orderBy) : array)"
我是 Angular 的新手,我仍在努力思考可能发生的事情,所以这可能是一个有明显答案的问题,但我在网上找不到任何相关答案.
我有一个 switch statement
决定从 return 到 orderBy
的哪个值,并且 orderBy
根据值 [=47= 正确地排列对象列表]编辑。但是,我希望 switch statement
的 default
案例确保 orderBy
对对象列表的顺序没有任何影响。
但是,orderBy
似乎具有默认功能,如果您不给它任何值,它会按照自己的方式对列表进行排序。
我尝试了各种方法让它工作:
default: return;
return什么都没有,orderBy
使用它的默认顺序。
default:break;
return什么都没有,orderBy
使用其默认顺序
default: return [];
和 return ['']
我认为一个空数组会被识别为一个参数,并且会解决这个问题,但它仍然使用默认顺序。
default: return [':false'];
我认为在 (reverse:false) 中传递一些值会覆盖默认顺序,但我收到了一个错误。
我也将它设置为使用 orderBy: $index track by $index
- 我认为它只会按数组的原始索引对其进行排序。这没有用。
Does anyone know an argument I can pass into
orderBy
to get it to do nothing at all to a list, or how I can override the default sorting.
您必须将 orderBy
属性 值设置为 null
。
propertyName = null
在 JS
或
ng-repeat="friend in friends | orderBy:null"
在 HTML
文档没有直接提及这一点,但有一个示例通过将 属性 字符串替换为普通空值来禁用排序。
<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>
暂时不触发orderBy是唯一的办法
例如
ng-repeat="x in (wantToOrder ? (array | orderBy) : array)"