错误没有显示在开发人员工具中,所以我猜它可能与数据本身及其读取方式有关。 {{upVote}}和{{downVote}}都没有值,并且在点击时显示为null。按钮是否全部链接?我正在为每个项目设置每个投票。
背景 投票系统,具有单独的上下分数(不作为单一投票得分)。 希望分数能够在数据库中持续存在。
我没有想过限制每位用户的投票,但如果您有想法,请随时在回复中加入。谢谢!
JS文件
$scope.upVote = function () {
if ($scope.voteType == "down") {
$scope.upVote++;
}
$scope.upVote++;
$scope.voteType = "up";
};
$scope.downVote = function () {
if ($scope.voteType == "up") {
$scope.downVote++;
}
$scope.downVote++;
$scope.voteType = "down";
};
帖子保存在$ scope.post中:
$scope.post = {
title: '',
upVote: 0,
downVote: 0
};
该按钮位于html中:
<i ng-click="downVote()"
class="fa fa-chevron-circle-down fa-2x"
ng-class="{true:'downVote', false:''}[vote=='downVote']"></i>
答案 0 :(得分:1)
$scope
与控制器范围相同。它不会在upVote
内发生变化。
angular.module('starter').controller('PostCtrl', function($scope, Post) {
$scope.posts = Post.all;
$scope.upVote = function () {
$scope.upVote++; // NOT the upVote property of the clicked post
...
};
});
您希望从$scope.posts
抓取帖子,如下所示:
angular.module('starter').controller('PostCtrl', function($scope, Post) {
$scope.posts = Post.all;
$scope.upVote = function (post) {
post.upVote++;
...
};
});
在你的ng-repeat中传递post
:
<div class="row" ng-repeat="(postId, post) in posts">
<i ng-click="upVote(post)" ...></i>
...
</div>
这样,您就可以引用点击的帖子,而不是$scope
本身的属性。