我希望过滤掉搜索结果,同时在管理员之前保留名称。
我无法使用bcoz的音轨我没有使用实际的重复,而是指令, 这是一个代表我问题的快速fiddle。
假设我搜索Fahad
名称中Fahad
的记录应该先出现
使用下划线/ loadash的解决方案也很受欢迎。
由于
答案 0 :(得分:1)
如果我理解正确,你只需要用户名为""匹配searchQuery以支持匹配用户列表。您并不是真的要求对匹配的用户进行排序。
此处jsfiddle更新了这样做。您会注意到我使用angular.copy
制作了用户数组的副本,并在匹配发生时更新它。
function TodoCtrl($scope) {
// Code goes here
$scope._users = [
{name:'Zafar', manager:'Owais',visible:true},
{name:'Owais', manager:'Fahad',visible:true},
{name:'Fahad', manager:'Raheel',visible:true}
];
$scope.users = angular.copy($scope._users);
$scope.update = function() {
$scope.users = angular.copy($scope._users);
$scope.users.forEach(function (user,i) {
var match = false;
['name','manager'].forEach(function (field) {
console.log(user);
if ($scope.users[i][field].toLowerCase().match($scope.searchQuery)) {
match = true;
if (field === 'name') {
$scope.users.splice(i,1);
$scope.users.unshift(user);
}
}
});
if (!match) {
$scope.users[i].visible = false;
}
else {
$scope.users[i].visible = true;
}
});
}
}