大家好,我有一些关于$ scope的问题,json用angular进行解析。
我有功能,当有人点击时,他们发送给api +1。很容易计数。但是当我尝试增加这个值时:我的错误在哪里? Angular只是连接值+1例子我有6个,当我点击它们再次显示61再点击611
<button class="place-button col-33" ng-if="usermeta.like_post" ng-click="like(post.id); post.likes = post.likes + 1">
<span class="col-50">
<i class="fa fa-beer"></i>
</span>
<span class="col-50">
{{likes}}
</span>
</button>
这是我如何通过控制器和服务获取我的锅
PostService.getPost(postId).then(function(data) {
scope.post = data.post;
})
当我在没有从Json API获取数据的情况下尝试此操作时,它可以正常工作但是没有!
答案 0 :(得分:3)
尝试使用此功能:$scope.likes= + $scope.likes+1;
。这个力导致整数。
HTML
<div ng-app>
<div ng-controller="TodoCtrl">
<button ng-click="incrementLikes()">
Click
</button>
{{likes}}
</div>
</div>
JS
function TodoCtrl($scope) {
$scope.likes='0';
$scope.incrementLikes=function(){
$scope.likes=+$scope.likes+1;
}
}
function TodoCtrl($scope) {
$scope.likes='0';
$scope.incrementLikes=function(){
$scope.likes=+$scope.likes+1;
}
}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.17/angular.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div ng-app>
<div ng-controller="TodoCtrl">
<button ng-click="incrementLikes()">
Click
</button>
{{likes}}
</div>
</div>
&#13;
答案 1 :(得分:2)
看起来你服务返回post.likes
作为字符串而不是数字,如下所示:{ likes: "6" }
。这就是字符串连接发生而不是增量的原因。
解决此问题:
- 您可以更改服务以将数字作为数字返回:{ likes: 6 }
或
- 以这种方式转换前端的喜欢:
PostService.getPost(postId)
.then(function(data){
$scope.post = data.post;
$scope.post.likes = parseInt($scope.post.likes);
})
答案 2 :(得分:0)
将模型值post.likes
视为string
。使用parseInt(post.likes) + 1
或Number(post.likes) + 1
。这些函数在ui中无法访问,因此在控制器内部使用函数并在ui中调用该函数。
$scope.incrementlike = function() {
$scope.post.likes = parseInt($scope.post.likes) + 1;
}