你可以在你的对象上绑定一个选中的属性,然后在你的 orderBy 子句中使用它:
<div ng-controller="Ctrl">
<ul>
<li ng-repeat="fruit in fruits | orderBy:['checked', 'name']">
<label><input type="checkbox" name="{{fruit.name}}" id="{{fruit.name}}" ng-model="fruit.checked">{{fruit.name}}</label>
</li>
<ul>
</div>
你的小提琴是最新的。
编辑:因为 undefined 并不严格等于 false,所以当您选中和取消选中复选框时,您可能会按顺序出现错误。您可以初始化每个数据的检查属性或使用自定义函数检查属性(我认为自定义函数更好)。这是代码:
HTML:
<div ng-controller="Ctrl">
<ul>
<li ng-repeat="fruit in fruits | orderBy:[checkedFunction, 'name']">
<label><input type="checkbox" name="{{fruit.name}}" id="{{fruit.name}}" ng-model="fruit.checked">{{fruit.name}}</label>
</li>
<ul>
</div>
你的控制器:
var app = angular.module('app', []);
function Ctrl($scope) {
$scope.fruits = [
{'name':'apple'},
{'name':'Mary'},
{'name':'Mike'},
{'name':'Adam'},
{'name':'Julie'}
];
$scope.checkedFunction = function(fruit) {
return fruit.checked || false;
};
}
你的小提琴是最新的第二个解决方案。