1

我有一个简单的 upVote/downVote 计数器。它在 downvote 上效果很好,但是当您单击 upvote 时,它​​会在原始 upvote 变量的末尾附加一个 1。(它不添加,它附加)但仅用于支持。为什么会这样,我该如何解决?

<span>
<a ng-click="upCount = upCount + 1" ng-init="upCount=location.upVoteCount" 
class="btn btn-success">{{upCount}}
</a>

<a ng-click="downCount = downCount - 1" ng-init="downCount=location.downVoteCount" 
class="btn btn-danger">{{downCount}}
</a>
</span>

注意:location.upVoteCount 和 location.downVoteCount 都定义为整数。它们使用 ng-repeat="locationList 中的位置" 填充。所以它们的值没有在控制器中明确声明。将 + 更改为 - 效果很好,如果将 location.upVoteCount(或 location.downVoteCount)替换为数字,添加功能也可以使用。

谢谢你的帮助!

4

4 回答 4

3

+表示“加”和“连接”,而-表示“减”。

强制变量以加法模式运行:

upCount = (parseInt(upCount) + 1)
于 2014-01-23T18:42:26.053 回答
2

试试这个

<a ng-click="upCount = upCount + 1" ng-init="upCount=parseInt(location.upVoteCount)" 
class="btn btn-success">{{upCount}}
</a>

<a ng-click="downCount = downCount - 1" ng-init="downCount=parseInt(location.downVoteCount)" 
class="btn btn-danger">{{downCount}}
</a>

更新

如果您的 location.upVoteCount 和 location.downVoteCount 变量不是整数/数字,那么这可能是一个问题。

然后先尝试解析。请参阅上面的 ng-init directive

于 2014-01-23T18:41:12.300 回答
1

除非位置实体上有字符串,否则我不确定您为什么会遇到问题。我只是做了一个快速的小提琴,它工作正常。这是HTML:

<div ng-app="myApp" ng-controller="myController">
    <span>
<a ng-click="upCount = upCount + 1" href="#" ng-init="upCount=location.upVoteCount">Up: {{upCount}}</a>
<a ng-click="downCount = downCount - 1" href="#" ng-init="downCount=location.downVoteCount">Down: {{downCount}}</a>
</span>
</div>

这是JavaScript:

var app = angular.module("myApp", []);

app.controller("myController", function($scope) {
    $scope.location = {
        upVoteCount: 0,
        downVoteCount: 0
    };
});

上下投票都可以正常工作。在这里运行它:

http://jsfiddle.net/jeremylikness/bPQXJ/

于 2014-01-23T20:03:20.960 回答
1

我现在无法尝试,但是如何:

ng-click="upCount = upCount - (-1)"

没有 + 运算符来混淆表达式评估器

于 2014-01-24T13:38:11.727 回答