2014-07-03 15 views
0

我有對象的這個集合/數組位置的Angular.js收集

$scope.users = [ 
    {name:'Maria', score:90}, 
    {name:'Bob', score:10}, 
    {name:'Claire', score:17}, 
]; 
$scope.currentUser = 'Bob'; 

我列出了他們使用NG-重複和排序依據

li.list-group-item(ng-repeat="user in users | orderBy:'score':true") 

我怎樣才能顯示一個消息說: 「歡迎鮑勃,今天你是#3」。 其中「1,2,3 ...」是他在基於「分數」的有序集合中的位置

+0

查看https://docs.angularjs.org/api/ng/directive/ng重複,您可以使用'$ index'變量 – ivarni

回答

0

您可以通過使用$過濾

的JavaScript

app.controller('UsersCtrl', ['$scope', '$filter', function ($scope, $filter) { 
    $scope.users = [ 
     {name: 'Maria', score: 90}, 
     {name: 'Bob', score: 10}, 
     {name: 'Claire', score: 17}, 
    ]; 

    user = $filter('filter')($scope.users, {name: 'Bob'})[0]; 
    // or 
    // user = $filter('filter')($scope.users, name: $scope.currentUser)[0]; 

    $scope.position = $scope.users.indexOf(user) + 1; 
}]); 

模板

<p>Welcome {{ currentUser }}, today you are #{{ position }}</p> 

應工作找到當前用戶。

+0

其實在獲得indexOf之前,你應該做一個'$ filter('orderBy')($ scope.users,'-score')'。但是,謝謝你;它工作完美。 –

0

使用{{$index}}來顯示索引。

記住它從0開始,所以你必須要加1

{{ $index + 1 }} 

希望這有助於。

+0

但是我怎樣才能從外部讀取{{$ index}} ng-repeat?在我的控制器上,我使用'$ scope.welcomeMessage ='Welcome'+ $ scope.currentUser +',今天你是...'' –