我有一個任務使得用戶名首先成爲列表。繼承人的例子如何在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
我有一個任務使得用戶名首先成爲列表。繼承人的例子如何在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
您可以使用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
我知道這對您所擁有的對象沒有幫助,但是您可能能夠從服務器獲得替代對象?
theres問題,名稱來沒有任何destinction檢測名稱我需要什麼,我已經使用命令按字母排序他們 – Supermegasharky
你可以*硬編碼*的名字,但這將是混亂。我認爲你最好是按照字母順序排序,或者根據你所擁有的集合建立一個對象數組,如果存在***,給* Owen * 1的'Order',否則給第一個人清單1? – christiandev
你可以看看我上面提供的小提琴。我創建了一個函數,它接受一個數組和一個字符串來搜索。如果找到,它會記下它的索引,然後將它移到數組的前面並刪除舊數組。
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");
});
這是一個很好的功能,ty。但我有orderBy,所以我必須在orderBy – Supermegasharky
請檢查該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'];
});
flitering數組它是否爲你工作 – User2
你就不能更改數組($ scope.items)爲[歐文,約翰,鮑勃,蔡健雅,喬治] – rmuller
什麼可以確定'訂單'? – christiandev
不,我有一個從服務器名稱列表 – Supermegasharky