I have this collection/array of objects
$scope.users = [
{name:'Maria', score:90},
{name:'Bob', score:10},
{name:'Claire', score:17},
];
$scope.currentUser = 'Bob';
I list them using ng-repeat and an orderBy
li.list-group-item(ng-repeat="user in users | orderBy:'score':true")
How can I show a message saying: "Welcome Bob, today you are #3". Where "1,2,3..." is his position in that ordered collection based on "score"
You can find current user by using $filter
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;
}]);
Template
<p>Welcome {{ currentUser }}, today you are #{{ position }}</p>
Should work.