如何在角度js中增加我的值?

时间:2016-12-13 06:53:27

标签: javascript angularjs arrays

大家好,我有一些关于$ 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获取数据的情况下尝试此操作时,它可以正常工作但是没有!

3 个答案:

答案 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;
   }
}

&#13;
&#13;
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;
&#13;
&#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) + 1Number(post.likes) + 1。这些函数在ui中无法访问,因此在控制器内部使用函数并在ui中调用该函数。

$scope.incrementlike = function() {
    $scope.post.likes = parseInt($scope.post.likes) + 1;
}