2015-05-27 35 views
-1

我有一個任務使得用戶名首先成爲列表。繼承人的例子如何在ng-repeat中創建第一個元素

$scope.items = [John,Bob,Tanya,Owen,George]; 

<div ng-repeat="item in items"></div> 

結果將是:

John 
Bob 
Tanya 
Owen 
George 

我怎樣才能讓歐文將是第一個這樣的:

Owen 
John 
Bob 
Tanya 
George 
+1

你就不能更改數組($ scope.items)爲[歐文,約翰,鮑勃,蔡健雅,喬治] – rmuller

+2

什麼可以確定'訂單'? – christiandev

+0

不,我有一個從服務器名稱列表 – Supermegasharky

回答

0

您可以使用orderBy ,與一個表達在

如果你有一個JSON對象與此類似....

$scope.itemsWithOrder = [{ 
    "name": "Owen", 
    "order": 1 
    }, { 
    "name": "Dave", 
    "order": 3 
    }, { 
    "name": "Ken", 
    "order": 2 
    }, { 
    "name": "John", 
    "order": 4 
    }]; 

然後,您可以使用order屬性進行排序的集合。

<div ng-repeat="itemw in itemsWithOrder | orderBy :'order'"> 
    {{itemw.name}} - {{itemw.order}} 
</div> 

這將使你輸出......(你也可以逆轉與-輸出,給orderBy :'-order'

歐文 - 1

肯 - 2

Dave - 3

John - 4

我知道這對您所擁有的對象沒有幫助,但是您可能能夠從服務器獲得替代對象?

+0

theres問題,名稱來沒有任何destinction檢測名稱我需要什麼,我已經使用命令按字母排序他們 – Supermegasharky

+0

你可以*硬編碼*的名字,但這將是混亂。我認爲你最好是按照字母順序排序,或者根據你所擁有的集合建立一個對象數組,如果存在***,給* Owen * 1的'Order',否則給第一個人清單1? – christiandev

0

Fiddle

你可以看看我上面提供的小提琴。我創建了一個函數,它接受一個數組和一個字符串來搜索。如果找到,它會記下它的索引,然後將它移到數組的前面並刪除舊數組。

var app = angular.module('myApp', []); 
app.controller('myController', function($scope){ 
    $scope.items = ["John","Bob","Tanya","Owen","George"]; 

    $scope.fixArray = function(array, name){ 
     angular.forEach(array, function(a){ 
      if (a == name){ 
       $scope.index = array.indexOf(a); 
      } 
     }); 
     array.unshift(array[$scope.index]); 
     array.splice($scope.index + 1, 1); 
    }; 

    $scope.fixArray($scope.items, "Owen"); 
}); 
+0

這是一個很好的功能,ty。但我有orderBy,所以我必須在orderBy – Supermegasharky

0

請檢查該http://plnkr.co/edit/qcj8lLuUppYzS9ytW0WR?p=preview

簡單地做:

<div ng-repeat="item in items| orderBy">{{item}}</div> 

控制器

var app= angular.module('app', []); 
app.controller('ctrl', function($scope) { 
    $scope.items = ['John','Bob','Tanya','Owen','George']; 
}); 
+0

flitering數組它是否爲你工作 – User2

相關問題