在orderBy之后,AngularJS $ index工作不正常

时间:2016-02-26 12:43:52

标签: javascript angularjs

处理用户可以对项目进行投票的项目,在订单之后,该功能仅适用于项目的原始索引。我想通过他们的ID属性跟踪这些项目,这些项目是从数据库中提取的,但是我遇到了问题。我也试过传递对象而不是它们的索引,但又一次无法绕过它。

相关JS

angular.module("cardSite", ['masonry'])
    .controller('mainCtrl', function($scope, dataService) {
        $scope.cards = [];
        dataService.getCards().then(function(response) {
            $scope.cards = response.data;
        }, function() {});

        $scope.plusOne = function($index) {
            $scope.cards[$index].card_rating += 1;
        };
    });

相关HTML

<div class="col-lg-3 tile grid-item" ng-repeat="card in cards | orderBy : '-card_rating' | limitTo:8 track by card.ID">
<div class="panel panel-default {{ card.card_category | lowercase }}_panel">
    <p>Card ID: {{card.ID}}</p>
    <!DOCTYPE svg>
    <p ng-click="plusOne($index)"> Vote up</p>
    <p>{{card.card_rating}}</p>
</div>

有人有任何建议吗?

1 个答案:

答案 0 :(得分:3)

在这种情况下,为什么需要索引?

你可以直接传递对象:

<p ng-click="plusOne(card)"> Vote up</p>

并将您的功能更改为:

$scope.plusOne = function(card) {
        card.card_rating += 1;
};