嘿,大家好,我知道如何在 angularjs 中创建向上/向下投票功能吗?我想让它类似于 stackoverflow 或 reddit 的东西。 我发现了一个Jquery插件https://github.com/janosgyerik/jquery-upvote这就是我想要的,但它是在 Jquery 中的。
我已经尝试了几种方法来做到这一点,但我仍然无法让它正常工作。这是我的方法。
HTML
<a class="green" ng-click="isUpVoted = !isUpVoted" ng-style="afterVoteUp" href=""> <i title="Up Votes" class="fa fa-arrow-circle-up fa-2x"></i></a>
<a class="maroon" ng-click="isDownVoted = !isDownVoted" ng-style="afterVoteDown" href="" > <i title="Down Votes" class="fa fa-arrow-circle-down fa-2x "></i></a>
Controller
$scope.isUpVoted = false;
$scope.$watch("isUpVoted",function(newVal, oldVal){
if(newVal != oldVal){
if(newVal){
// first click
// upvote
}else{
// second click
// remove upvote
}
}
});
$scope.isDownVoted = false;
$scope.$watch("isDownVoted",function(newVal, oldVal){
if(newVal != oldVal){
if(newVal){
// first click
// downvote
}else{
// second click
// remove downvote
}
}
});
对于一个按钮来说工作完全正常,但是我仍然不知道如何使这两个按钮一起工作,例如,当用户单击“赞成票”时,“反对票”将取消,反之亦然,然后再次单击“赞成票”以取消投票。
最佳答案
只需使用单个作用域变量即可充当切换按钮。
示例演示: http://plnkr.co/edit/C4w9hDK3xW1R0ua3WPgU?p=preview
HTML:
<body ng-controller="MainCtrl">
<i title="Up Votes" ng-click="changeVote(vote, 'up')" class="fa fa-arrow-circle-up fa-2x" ng-class="{true:'up', false:''}[vote=='up']"></i>
<br>
<i title="Down Votes" ng-click="changeVote(vote, 'down')" class="fa fa-arrow-circle-down fa-2x" ng-class="{true:'down', false:''}[vote=='down']"></i>
<br>Vote: {{vote}}
Controller 逻辑:
app.controller('MainCtrl', function($scope) {
$scope.changeVote = function(vote, flag) {
$scope.vote = vote == flag ? 'None' : flag;
alert($scope.vote);
};
});
关于javascript - 如何在AngularJS中创建向上/向下投票功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24093736/