javascript - 如何在AngularJS中创建向上/向下投票功能

标签 javascript jquery angularjs

嘿,大家好,我知道如何在 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/

相关文章:

javascript - &lt;input type "multiple"> 中的条件 ="file"属性与 AngularJS

javascript - 如何发送提交按钮名称作为参数;使用 JQuery/Spring MVC 提交表单?

javascript - 键入用户名后浏览器在表单中自动填充密码时如何跟踪更改

javascript - 对于输入类型=日期,将日期显示为 dd-mm-yyyy 格式

javascript - Angular JS - 在一个 Controller 中运行两个函数

javascript - ng-show 表示多个值

javascript - 无法找到在 Sails 项目中将变量传递给 Jade title 的位置

javascript - 这个 JavaScript 片段发生了什么?

javascript - JS : proper way of using optional chaining?

jquery - 动态创建/附加 Divs - 无法获取 ID JQuery