有没有办法有选择地限制 OrderBy 在 AngularJs 中的 ng-repeat 上的应用?

Is there a way to restrict the application of OrderBy on ng-repeat in AngularJs selectively?

在我的应用程序中,我迭代了一个数组,该数组的值绑定到文本框(基本上是输入类型="number")。即,

说,

<div ng-repeat="number in numbers|orderBy:'value'">
     <input type="number" ng-model="number.value">
</div>  

这个 Plnkr link - http://plnkr.co/edit/?p=preview&s=D7hhm2al6sOXMHwQ

演示我在说什么。

因此,只要我更改了文本框的值,就会重新排序。我不希望这种情况发生,因为这会让我的用户感到不适,他们必须搜索他们刚刚编辑的框。 我想要一个解决方案,在第一次创建 dom 时订购 ng-repeat,但在重新创建它们之前不会再次订购。我怎样才能做到这一点?请帮忙。

您可以通过在 controller 中对数组进行一次排序来实现,在本例中是通过注入 $filter。显然,在加载 $scope.numbers 后执行此操作。

.controller('myController', function($filter, $scope){
    $scope.numbers = $filter('orderBy')($scope.numbers, 'value')
})