在Angular app中每个帖子投票一次

时间:2016-05-16 17:27:47

标签: javascript angularjs

目前,用户一般只能投票或投票一次。我希望用户能够在每个帖子上进行一次或多次投票。

<div class="cont">
  <div class="d0"></div>
  <div class="d1">
  </div>
</div>

控制器:

<div ng-repeat="post in posts | orderBy:'-upvotes'">

    <span class="glyphicon glyphicon-thumbs-up"
      ng-click="incrementUpvotes(post)" ng-style="post.hadUpvoted ? {color: 'red'} : {}"></span>
    {{post.upvotes}}

    <span class="glyphicon glyphicon-thumbs-down" ng-click="downvote(post)" 
      ng-style="post.hadDownvoted ? {color:'red'} : {}"></span>

服务:

var upvoted;
$scope.incrementUpvotes = function(post) {
    if(!upvoted) {
        posts.upvote(post);
        upvoted = true; 
        post.hadUpvoted = true; 
    }
};

2 个答案:

答案 0 :(得分:3)

不是检查全局require 'csv' # file variable configuration code CSV.read(file, col_sep: '|').select { |row| row[2] == 'US' } 变量,而是针对每个帖子进行检查。

您的控制器应该是这样的,

upvoted

我们的想法是为每个帖子在本地设置$scope.incrementUpvotes = function(post) { if(!post.hadUpvoted) { posts.upvote(post); post.hadUpvoted = true; } }; 变量。

希望它有所帮助。如果有任何疑问,请在评论中提问。

答案 1 :(得分:0)

xyz的范围限定为整个控制器,因此当您检查upvoted时,如果用户已投票一次,则该块将无法运行。请检查if(!upvoted),因为它的范围是每个帖子。

相关问题