In meinem ursprünglichen Code, ich zuerst überprüfen, ob ein Benutzer eine Diskussion markieren kann, wenn sie kann ich die ng-Schalter wo, wenn sie es markieren, werden sie Erfolg sehen Meldung angezeigt:Angular js: Ng-switch wird nicht aktualisiert nach ng-click
<div ng-if="canFlag(discussion)">
<div ng-switch="isFlagging"
ng-click="flagDiscussion(discussion.id)">
<i ng-switch-when="false"
class="icon-flag"
aria-hidden="true"></i>
<div ng-switch-when="true"
ng-click="$event.stopPropagation()"
>Successfully flagged</div>
</div>
</div>
ich mag würde meinen Code, so dass der ng-Klick in dem falschen ng-Schaltzustand Refactoring ist und dass ich die stopPropagation Methode entfernen wie:
<div ng-if="canFlag(discussion)">
<div ng-switch="isFlagging">
<div ng-switch-when="false"
ng-click="flagDiscussion(discussion.id)">
<i class="icon-flag" aria-hidden="true"></i>
</div>
<div ng-switch-when="true">Successfully flagged</div>
</div>
</div>
In der erste Code, ng-switch funktioniert nach ng-click, aber im zweiten Code bleibt ng-switch falsch, obwohl in der es wird angeklickt. isFlagging wird in der flagdiscussion-Methode auf 'true' gesetzt. Nach dem Klicken auf den Flag-Button ist der Flag-Button immer noch dort und nichts ändert sich.
Ich sah einen ähnlichen Beitrag AngularJs: why doesn't ng-switch update when I use ng-click? und x.isFlagging zum Schalter und auch this.isFlagging = true nach der Klick-Anweisung hinzugefügt, aber mit diesem fügte ich nicht einmal mehr die Flag-Taste.
Wer weiß, warum das passiert?
js Code:
$scope.flagDiscussion = function(id) {
service.flagDiscussion(id);
this.isFlagging = true;
};
JavaScript-Code hinzufügen? –
@DavidH. Ich fügte in den Js-Code hinzu, aber es kennzeichnet es gerade in der DB und macht die Markierung wahr – chonglawr