Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/42.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何更新变量的最新值_Javascript_Node.js_Angularjs - Fatal编程技术网

Javascript 如何更新变量的最新值

Javascript 如何更新变量的最新值,javascript,node.js,angularjs,Javascript,Node.js,Angularjs,我有一个ng click功能,用作“向上投票按钮”,它将投票数增加1,每个用户只能投票一次,我检测“一个用户只能投票一次”的方法是比较他们的用户id和投票id如果他们的用户id在投票id中,那么他们将无法投票,但问题是,我无法将从数据库获取的更新的投票id列表设置为变量。换句话说,用户可以多次投票,除非用户刷新页面,并将最新的投票id更新为变量 我不确定我的做法是否正确,如果你们有更好的建议,请告诉我,非常感谢你们的建议。 这就是我目前所拥有的 $scope.up = function(){

我有一个ng click功能,用作“向上投票按钮”,它将投票数增加1,每个用户只能投票一次,我检测“一个用户只能投票一次”的方法是比较他们的用户id和投票id如果他们的用户id在投票id中,那么他们将无法投票,但问题是,我无法将从数据库获取的更新的投票id列表设置为变量。换句话说,用户可以多次投票,除非用户刷新页面,并将最新的投票id更新为变量

我不确定我的做法是否正确,如果你们有更好的建议,请告诉我,非常感谢你们的建议。 这就是我目前所拥有的

$scope.up = function(){
          if(s_session != null){ // check if user logged in or not 
            data.getUserData().success(function(userData){ // get user data
              $scope.a = {};
              $scope.b = {};
              $scope.a = data1.votes.voted_id; // set voted_id(it is an array)
              $scope.b = userData._id; // set user_id
            if($scope.a.indexOf($scope.b) == -1){ // if it is not in the list
                                                  // perform upvote action 
          $scope.user ={};
          $scope.user = userData;
          $scope.user.permalink = $routeParams.permalink;
          $http.post('/contentHandler/Post/vote/up',$scope.user).
          success(function(updatedData) {
          $scope.a = updatedData.votes.voted_id; // after upvoted
                                                // re-set the latest voted_id to
                                               // $scope.a and prevent the user
                                              // to vote again
            }).error(function(err){

            });
            }else{
              alert("you can't vote twice");
            }
            });
            }else{
              $location.path('/login');
            }
          }

你到底在哪里增加选票?您可以在客户端(基本上在角度范围内)设置一个临时的
userhasnotvote
boolean变量,以防止他们在重新加载页面之前进行多次投票

将变量添加到范围中,如下所示:

$scope.userHasNotVoted = true;

$scope.up = function(){
    if(userHasNotVoted){
        $scope.userHasNotVoted = false;
        //add vote and record it in the db
        // do whatever else
    }
}

我在PHP MySQL中创建了一个upvote系统,为了防止重复投票,我只创建了一个存储投票的表(谁创建了投票,在哪个页面中),然后,当用户投票时,系统检查该表以查找pair用户页面是否已经存在。我很难理解你们想要比较的数据是什么,以及这些数据来自哪里。这一行比较什么<代码>如果($scope.a.indexOf($scope.b)=-1)它们是对象吗?还是简单的值?@Reboog711很抱歉我的阐述不周全,您指的是使用indexOf将“用户id”与“投票id”进行比较,因为我将“投票id”存储在数组中(它是一个包含投票用户的数组)。如果结果为-1,这意味着它不在列表中,那么它将执行“向上投票操作”,否则它意味着用户id在投票id中,这意味着他/她已经投票,因此他们不能对用户id和投票id整数进行投票?你测试过比较的结果吗?我想我需要一个可运行的样本来深入研究。