Angular js: Ng-switch не обновляется после ng-click
В моем исходном коде я сначала проверяю, может ли пользователь пометить обсуждение, если он может, у меня есть ng-переключатель, где, если он пометит его, он увидит сообщение об успехе:
<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>
Я хотел бы провести рефакторинг своего кода так, чтобы ng-click находился внутри ложного условия ng-switch, и чтобы я удалил метод stopPropagation, такой как:
<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>
В первом коде ng-switch работает после ng-click, однако во втором коде ng-switch остается ложным, даже если в нем нажимают. isFlagging переключается на 'true' в методе flagdiscussion. Таким образом, после нажатия на кнопку флага кнопка флага все еще там, и ничего не меняется.
Я видел похожий пост AngularJs: почему ng-switch не обновляется, когда я использую ng-click? и добавил x.isFlagging к переключателю, а также this.isFlagging = true после оператора click, но с этим добавленным, я даже больше не вижу кнопку флага.
Кто-нибудь знает, почему это происходит?
JS код:
$scope.flagDiscussion = function(id) {
service.flagDiscussion(id);
this.isFlagging = true;
};
2 ответа
AngularJs: почему ng-switch не обновляется, когда я использую ng-click? на самом деле был правильный ответ, я просто забыл добавить область х в JS