Angular - 在ng-repeat中添加upvote按钮

时间:2016-01-22 02:25:06

标签: javascript angularjs

我在尝试向使用ng-repeat创建的列表中的元素添加upvote按钮时遇到问题。这份清单是特价交易。该部分使用deal.controller和data-ng-init =“find()”。

deal.controller有功能

   // Find a list of Deals

    $scope.find = function() {

        $scope.deals = Deals.query();

    };

每个元素上的按钮都使用ng-click

    <button ng-click="upVote(deal._id)" type="button" class="btn btn-danger
 vote-up-button"><i class="glyphicon glyphicon-arrow-up"></i> Hot</button>

调用upvote函数

    // upVoteDeal

    $scope.upVote = function (id) {

        $scope.deal.votes = $scope.deal.votes+1;

        var deal = $scope.deal;

        deal.$update(function() {
            $location.path('deals/' + deal._id);
        }, function(errorResponse) {
            $scope.error = errorResponse.data.message;
        });


    };

我遇到的问题是$scope.deal.votes = $scope.deal.votes+1;是错误的。

TypeError: Cannot read property 'votes' of undefined

回来

1 个答案:

答案 0 :(得分:3)

传递整个对象,而不仅仅是它的id。

 <button ng-click="upVote(deal)">

现在,您可以在控制器中的功能内部获得所需的一切

$scope.upVote = function(deal) {

    deal.votes++;
    deal.$update(function() {
        $location.path('deals/' + deal._id);
    }, function(errorResponse) {
        // rollback votes on fail also
        $scope.error = errorResponse.data.message;
    });
}