0
現在、私は好き/違ったシステムを実装していますが、動作していますが、まだ問題はありません。Ng-Clickはトグル直後に動作しません
何らかの理由で、好きなボタンに切り替えると、ページを更新しない限り、違うボタンが機能しない/トリガーしません。私が好きではない時は、私は好きです。あなたの上
HTML
<span ng-click="likeCapture()" ng-show="like" class="clickable capture-action-buttons"><span class="glyphicon glyphicon-heart"></span> Like</span>
<span ng-click="unlikeCapture()" ng-show="liked" class="clickable capture-action-buttons liked-markup"><span class="glyphicon glyphicon-heart"></span> Liked</span>
トリガされているマークアップとngのクリック機能を除いて、両方のボタンが同一であることがわかります。これはなぜ
JS
/* -------------------------- Check if voted unlike Capture -------------------------- */
// Check voted
var votes = res.data.votes;
if(votes.length == 0){$scope.like = true;}
votes.forEach(function(vote){
if(vote.userId === auth.profile.user_id) {
$scope.liked = true;
}
});
$scope.like = !$scope.liked;
// Unlike
$scope.unlikeCapture = function(){
votes.forEach(function(vote){
if(vote.userId === auth.profile.user_id) {
var voteId = vote._id;
voteApi.unlikeCapture(voteId).then(function(res) {
$scope.capture.votes.length--;
});
$scope.liked = false;
$scope.like = true;
}
});
};
/* --------------------------------- Like Capture ----------------------------------- */
$scope.likeCapture = function(){
var likeObj = {
userId : $scope.auth.profile.user_id,
userName : $scope.auth.profile.name,
votedFor : $scope.capture.userId
};
var notificationObj = {
notificationFor : $scope.capture.userId,
notificationFrom : auth.profile.user_id,
concirning : 'like',
parameter : id
};
captureApi.likeCapture(id, likeObj)
.then(function(res){
$scope.capture.votes.push(res);
$scope.liked = true;
$scope.like = false;
var likeId = res.data._id;
console.log(likeId);
if($scope.capture.userId !== auth.profile.user_id) {
voteApi.voteNotification(likeId, notificationObj)
.then(function(res){
console.log(notificationObj);
console.log(likeId);
});
}
});
};
誰もがアイデアを持っていると私はそれを修正することができますか?
「好き」と「好き」の代わりに1つの変数を使用できます。 ng-showとng-hideについて読む。 – kTT
多少の文脈がなければ、やや難解です。プランカがいい。しかし、私はそれを刺すでしょう... $ scope.liked = false; $ scope.like = true; $ scope.unlikeCaptureの約束(voteApi.unlikeCapture(voteId).then(...))の中に設定する必要があります – jbrown