2017-03-21 23 views
0

返回false角碼,如果文本區域是空

var myApp = angular.module("myApp", []); 
 
myApp.controller("votesController", ['$scope', function($scope, $timeout) { 
 
    $scope.comments = [ 
 
    ]; 
 
    $scope.newComment = { 
 
    likes: 0 
 
    }; 
 
    $scope.createComment = function() { 
 
    if ($scope.newComment.comment != "") { 
 
     $scope.comments.push({ 
 
     comment: $scope.newComment.comment, 
 
     likes: $scope.newComment.likes, 
 
     likeColor : {}, 
 
     dislikeColor : {} 
 
     }); 
 
    } 
 
    }; 
 
    $scope.incrementLikes = function(comment) { 
 
    comment.likes++; 
 
    }; 
 
    $scope.decrementLikes = function(comment) { 
 
    comment.likes--; 
 
    }; 
 
}]);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script> 
 
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script> 
 
<div class="container" ng-app="myApp"> 
 
    <div ng-controller="votesController"> 
 
    <div ng-repeat="comment in comments"> 
 
     <div class="comment_box_all"> 
 
     <div class="comment_user"> 
 
      <div class="comment_note"> 
 
      <a id="vote_comment" ng-click="incrementLikes(comment, $index)" class="vote_comment" ng-style="comment.likeColor">Like</a> 
 
      <span class="num_vote_comm_11"> | {{comment.likes}} | </span> 
 
      <a ng-click="decrementLikes(comment, $index)" class="vote_dis_like_comm" ng-style="comment.dislikeColor">Unlike</a> 
 
      </div> 
 
      <div class="content_text_user_ans"><span>{{comment.comment}}</span></div> 
 
     </div> 
 
     </div> 
 
    </div> 
 
    <div class="area_comm_tex"> 
 
     <textarea class="text_area" ng-model="newComment.comment" placeholder="Add comment"></textarea> 
 
     <button class="op_comm_now" ng-click="createComment()">Add text</button> 
 
    </div> 
 
    </div> 
 
</div>

嘿,現在這是腳本,添加文字和可以指望喜歡或不喜歡點擊,但是是一個問題,這個代碼worsk即使文本區域是空的(喜歡/不喜歡被添加)。

問題:如果文本區域爲空(沒有任何字符,例如trim()),該代碼無法工作就像返回false?

+0

使用'如果($ scope.newComment.comment.trim()){'檢查是否包含註釋的任何字符串。 – Tushar

回答

2

您應該初始化您的$ scope.newComment.comment,使其不會undefined

var myApp = angular.module("myApp", []); 
 
myApp.controller("votesController", ['$scope', function($scope, $timeout) { 
 
    $scope.comments = [ 
 
    ]; 
 
    $scope.newComment = { 
 
    likes: 0, 
 
    comment:"" 
 
    }; 
 
    $scope.createComment = function() { 
 
    if ($scope.newComment.comment != "") { 
 
     $scope.comments.push({ 
 
     comment: $scope.newComment.comment, 
 
     likes: $scope.newComment.likes, 
 
     likeColor : {}, 
 
     dislikeColor : {} 
 
     }); 
 
    } 
 
    }; 
 
    $scope.incrementLikes = function(comment) { 
 
    comment.likes++; 
 
    }; 
 
    $scope.decrementLikes = function(comment) { 
 
    comment.likes--; 
 
    }; 
 
}]);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script> 
 
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script> 
 
<div class="container" ng-app="myApp"> 
 
    <div ng-controller="votesController"> 
 
    <div ng-repeat="comment in comments"> 
 
     <div class="comment_box_all"> 
 
     <div class="comment_user"> 
 
      <div class="comment_note"> 
 
      <a id="vote_comment" ng-click="incrementLikes(comment, $index)" class="vote_comment" ng-style="comment.likeColor">Like</a> 
 
      <span class="num_vote_comm_11"> | {{comment.likes}} | </span> 
 
      <a ng-click="decrementLikes(comment, $index)" class="vote_dis_like_comm" ng-style="comment.dislikeColor">Unlike</a> 
 
      </div> 
 
      <div class="content_text_user_ans"><span>{{comment.comment}}</span></div> 
 
     </div> 
 
     </div> 
 
    </div> 
 
    <div class="area_comm_tex"> 
 
     <textarea class="text_area" ng-model="newComment.comment" placeholder="Add comment"></textarea> 
 
     <button class="op_comm_now" ng-click="createComment()">Add text</button> 
 
    </div> 
 
    </div> 
 
</div>

+0

非常感謝您的幫助:) –

+0

在JS中,我可以使用.val('')來添加註釋後清除文本區域,Angular也是類似的選項嗎? –

+0

你對這個問題的描述會讓別人誤解它。下次可能會更清楚地描述它。 @ V.R – blackmiaool

2

你可以做這樣的事情:

$scope.incrementLikes = function(comment) { 
    if(comment.comment != null && comment.comment.length > 0) comment.likes++; 
}; 

$scope.decrementLikes = function(comment) { 
    if(comment.comment != null && comment.comment.length > 0) comment.likes--; 
}; 
0
var myApp = angular.module("myApp", []); 
myApp.controller("votesController", ['$scope', function($scope, $timeout) { 
    $scope.comments = [ 
    ]; 
    $scope.newComment = { 
    likes: 0 
    }; 
    $scope.createComment = function() { 
    if ($scope.newComment.comment != "") { 
     $scope.comments.push({ 
     comment: $scope.newComment.comment, 
     likes: $scope.newComment.likes, 
     likeColor : {}, 
     dislikeColor : {} 
     }); 
    } 
    }; 
    $scope.incrementLikes = function(comment) { 
    if($scope.newComment.comment && $scope.newComment.comment.length){ 
    comment.likes++; 
    } 

    }; 
    $scope.decrementLikes = function(comment) { 
if($scope.newComment.comment && $scope.newComment.comment.length){ 
    comment.likes--; 
} 
    }; 
}]); 

您首先檢查文本是否是empty.if文本empty.donot做遞增或遞減。

相關問題