ng-repeat orderBy保持固定的最高值

时间:2015-09-03 15:08:01

标签: javascript angularjs angularjs-ng-repeat angularjs-orderby

在此处查看小提琴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
    }
}        

3 个答案:

答案 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>

这可以按字母顺序排序,因为它是默认的排序顺序