Javascript 将单个项目置于列表顶部
给定一个任意的项目列表,在一个ul或一组div中,我想使用角度的方式将所选项目置于列表/显示的顶部Javascript 将单个项目置于列表顶部,javascript,angularjs,angularjs-ng-repeat,Javascript,Angularjs,Angularjs Ng Repeat,给定一个任意的项目列表,在一个ul或一组div中,我想使用角度的方式将所选项目置于列表/显示的顶部 $scope.items = [{name: "Garfield", id: 1}, {name: "Simon", id: 2}, {name: "Whatever", id: 3}] $scope.model = {selectedItemId: 3} 在视图中,使用ng repeat ul.items li.item ng-repeat="item in items" ng-class
$scope.items = [{name: "Garfield", id: 1}, {name: "Simon", id: 2}, {name: "Whatever", id: 3}]
$scope.model = {selectedItemId: 3}
在视图中,使用ng repeat
ul.items
li.item ng-repeat="item in items" ng-class="{selected: model.selectedItemId == item.id"
div {{item.name}}
我希望所选项目被过滤或排序到列表的顶部,同时使用AngularJS方法保留剩余的顺序。由于您的数据已经很好地格式化为数组,因此您可以使用自定义过滤器 Angular提供了许多内置过滤器,但是编写自己的过滤器非常容易。 我本打算在这里放一个例子,但是搜索发现了一个由Sam Deering创建的非常好的例子 我真的无法改进 为了便于访问,以下是代码的相关部分:
app.filter('currentUserToTop', function () {
return function (users, current) {
var newList = [];
angular.forEach(users, function (u) {
if (u.id == current) {
newList.unshift(u);
}
else {
newList.push(u);
}
});
return newList;
};
});
是与此示例关联的小提琴