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

Пытаться: ng-switch on="isFlagging"

Другие вопросы по тегам