Ich bin eine Beispielanwendung implementieren und ich muss eine Follow-Taste ähnlich der in Twitter implementieren.Toggle-Taste in HTML und AngularJS
ich den Knopf codiert sind wie folgt,
<button class="btn pull-right{{setButtonStyle(S.Id)}}"
ng-class="{true:'btn-primary', false:'btn-secondary'}[!S.isFollow]"
ng-click="toggleFollow(S.Id)"> {{!S.isFollow && 'Follow' || 'Unfollow'}}
</button>
Die ng-click
Funktion übernimmt die DB-Tabellen und schaltet auch auf die Schaltfläche UI. Es ist wie folgt,
$scope.toggleFollow = function (userId) {
var element = $scope.followIds.indexOf(userId);
if (element == -1) {
// Follow user
$scope.Searched[Sindex].isFollow = !$scope.Searched[Sindex].isFollow; // Toggles the button
console.log("Follow called");
})
} else if (element > -1) {
// Unfollow user
$scope.Searched[Sindex].isFollow = !$scope.Searched[Sindex].isFollow; // Toggles the button
console.log("Unfollow called");
})
}
}
Das Problem ist, dass die Schaltfläche nicht zufällig umgeschaltet wird. Ich vermute, dass die AngularJS-Digest-Schleife nicht jedes Mal ausgelöst wird, wenn auf die Schaltfläche geklickt wird.
Ich weiß sicher, dass die Angular-Funktion jedes Mal aufgerufen wird, wenn auf die Schaltfläche geklickt wird. Daher wird nur der Schalter nicht wie erwartet ausgelöst. Wie zwinge ich die Taste, jedes Mal, wenn es geklickt wird, zu drücken?
Try $ scope. $ Apply() in der letzten Funktionslinie – Lax
@Lax Did. Ich bekomme einen Fehler, der 'Fehler liest: [$ rootScope: inprog] $ apply bereits in Bearbeitung ' – Rai
Kannst du PLNKR oder etwas anderes? – Lax