1

我想知道在 ng-repeat 中更改顺序后如何获取第一项的数据。

我创建了加载第一项数据的 jsfiddle。我想在 orderBy 标题之后获得第一个项目。

http://jsfiddle.net/xTJr3/1/

<div ng-controller="AppCtrl">
    <div data-items></div>
</div>

angular.module('App', []).
// sample data
controller('AppCtrl', function($scope){
    $scope.items =[
        {'title': 'Item 3'},
        {'title': 'Item 2'},
        {'title': 'Item 1'}
    ]
}).
directive('items', function(){
    return {
        template: '<span ng-repeat="item in items | orderBy:\'title\'">{{item.title}}</span>'+
        '<h1>{{currentItem}}</h1>',
        controller: function($scope){
            // wants to get first item's title after ordered by title.
            // it should be Item 1
            $scope.currentItem = $scope.items[0].title;
        }
    }
})
4

1 回答 1

3

有不同的方法可以做到这一点。最简单的方法是orderByFilter直接在控制器中使用,这样控制器和视图共享相同的items.

演示链接

directive('items', function(){
    return {
        template: '<span ng-repeat="item in items">{{item.title}}</span>'+
        '<h1>{{currentItem}}</h1>',
        controller: function($scope, orderByFilter){  
            $scope.items = orderByFilter($scope.items, 'title');
            $scope.currentItem = $scope.items[0].title;
        }
    }
})
于 2013-10-04T02:39:16.383 回答