AngularJS'ng-click将整数视为字符串

时间:2014-01-23 18:34:49

标签: angularjs angularjs-ng-click

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

<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”中的位置填充。因此,它们的值未在控制器中显式声明。将+更改为a - 工作得很好,如果用一个数字替换location.upVoteCount(或location.downVoteCount),add函数也可以正常工作。

感谢您的帮助!

4 个答案:

答案 0 :(得分:3)

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

强制变量在加法模式下运行:

upCount = (parseInt(upCount) + 1)

答案 1 :(得分: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

答案 2 :(得分: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/

答案 3 :(得分:1)

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

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

没有+运算符混淆表达式赋值器