在此处查看小提琴http://jsfiddle.net/prantikv/gcz4gwgw/1/
我想在列表顶部找到一个i项目,其余按字母顺序排列:
<div ng-controller="MyCtrl">
<ul>
<li ng-repeat="value in name | orderBy:'name'">{{value.name}} </li>
</ul>
</div>
在我的控制器中,我有以下
var myApp = angular.module('myApp',[]);
function MyCtrl($scope) {
$scope.name=[
{name:'zani',country:'Norway'},
{name:'aege',country:'Sweden'},
{name:'Kai',country:'Denmark'}]
}
我想要的是首先出现的名字“kai”,然后按字母顺序排列其余部分。
=====编辑===============
现在我已经玩了并获得了以下
在我看来:
<div ng-controller="MyCtrl">
<ul>
<li ng-repeat="value in name | orderBy:myValueFunction ">{{value.name}} </li>
</ul>
</div>
在我的控制器中:
$scope.myValueFunction = function(value) {
if(value.name == "kai"){
return value.name;
}else{
//what todo here so the rest of the list is sorted alphabetically
}
}
答案 0 :(得分:7)
您可以在数组项中添加“固定”变量,并按以下方式添加:
$scope.name=[
{name:'zani',country:'Norway', pinned: false},
{name:'aege',country:'Sweden', pinned: false},
{name:'Kai',country:'Denmark', pinned: true}]
然后相应地改变你的重复:
<li ng-repeat="value in name | orderBy:['pinned','name']">{{value.name}} </li>
现在“固定”具有第一顺序优先级,'kai'将始终是循环中的第一个。
答案 1 :(得分:3)
上面的回答很好实现,但由于您没有选择编辑回复,因此您可以按照我下面提到的简单解决方法进行操作。否则你可以去创建自定义过滤器。
<强>标记强>
<div ng-controller="MyCtrl">
<ul>
<li ng-repeat="single in name | filter:{'name':'Kai'}">{{single.name}} </li>
<li ng-repeat="value in name | filter:{'name':'!Kai'}" | orderBy:'name'">{{value.name}} </li>
</ul>
</div>
答案 2 :(得分:2)
对于那些来到这个问题的人我得到了它的工作: 在这里工作小提琴: http://jsfiddle.net/prantikv/gcz4gwgw/7/
所以在我看来,我有以下几点:
$$('.button').forEach(function (button, index) {
button.getAttribute('name').then(function (btnName) {
console.log('#' + index + ', name: ' + btnName);
});
});
在我的控制器中:
<div ng-controller="MyCtrl">
<ul>
<li ng-repeat="value in name | orderBy:myValueFunction ">{{value.name}} </li>
</ul>
</div>
这可以按字母顺序排序,因为它是默认的排序顺序