以下代码取自 Code Academy 的 AngularJS 类(class)。在第一课中,向用户提供了“喜欢”或“不喜欢”的评级选项。一旦用户点击“喜欢”按钮,投票就会上升,同样,用户点击“不喜欢”按钮,投票就会增加到减号。但是代码中没有办法限制用户只能投赞成票或反对票一次。有没有办法使用 AngularJS 限制用户投票一次?
html代码
<div class="rating">
<p class="likes" ng-click="plusOne($index)">+{{product.likes}}</p>
<p class="dislikes" ng-click="minusOne($index)">-{{product.dislikes}}</p>
</div>
AngularJS 代码
app.controller('MainController', ['$scope',
function($scope) {
$scope.title = 'Top Sellers in Books in this Great City';
$scope.promo = 'Our Christmas Promo is on the way!';
$scope.products = [{
name: 'The Book of Trees',
price: 19,
pubdate: new Date('2014', '03', '08'),
cover: 'img/the-book-of-trees.jpg',
likes: 0,
dislikes: 0
}, {
name: 'Program or be Programmed',
price: 8,
pubdate: new Date('2013', '08', '01'),
cover: 'img/program-or-be-programmed.jpg',
likes: 0,
dislikes: 0
}, {
name: 'Book1',
price: 8,
pubdate: new Date('2015', '04', '02'),
cover: 'img/..',
likes: 0,
dislikes: 0
}, {
name: 'Book2',
price: 8,
pubdate: new Date('2015', '09', '09'),
cover: 'img/..',
likes: 0,
dislikes: 0
}];
$scope.plusOne = function(index) {
$scope.products[index].likes += 1;
};
$scope.minusOne = function(index) {
$scope.products[index].dislikes += 1;
};
}
]);
最佳答案
是的,只需标记数组中的对象即可。
$scope.plusOne = function(index) {
if(!$scope.products[index].upvoted){
$scope.products[index].likes += 1;
$scope.products[index].upvoted = true;
}
};
$scope.minusOne = function(index) {
if(!$scope.products[index].downvoted){
$scope.products[index].dislikes += 1;
$scope.products[index].downvoted = true;
}
};
如果您希望通过赞成票来否定反对票(反之亦然),则必须添加更多内容,但这很简单。
关于javascript - 有没有办法在 AngularJs 中只投赞成票或反对票一次?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33899998/