我在尝试向使用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
答案 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;
});
}