我的应用程序中有一个频繁的模式,我很好奇是否有可能通过自定义指令解决它:
select(ng-model='selectedEmployee' ng-options="employee.name for employee in employees | orderBy:[employeeSort, 'name']")
employees = [{name: EMP1, ...}, {name: EMP2, ...}]
我的排序功能是:
$scope.employeeSort = function(employee) { return employee._id != '0' ? '' : employee }
正如你所看到的,我的数组中有一个虚拟元素,我总是希望显示在顶部,但是在某些属性中对其余项进行排序(在这种特殊情况下为name
)。对于虚拟元素,我总是有_id = 0
。
因此,不是为所有情况编写自定义排序函数,而是设置我的标记以使用该函数,我想使用这样的指令:
select(ng-model='selectedEmployee' keep_id_0_on_top ng-options="employee.name for employee in employees | orderBy:'name'")
答案 0 :(得分:0)
我认为过滤器比指令更合适。 像
这样的东西<select ng-options="item in items | orderBy:name | stickyTop:0">
和
filter('stickyTop', function(array, id) {
for (var i = 0 ; i < array.length ; i++) {
if (array[i].id === id) {
var topEls = array.splice(i, 1);
array.unshift(topEls[0]);
break;
}
}
return array;
})
(代码未经过测试,但您明白了)