Angular js:Ng开关在Ng点击后没有更新



在我的原始代码中,我首先检查用户是否可以标记讨论,如果可以,我有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点击在错误的ng开关条件内,并删除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开关在ng点击后工作,但在第二个代码中的ng开关仍然为false,即使在被点击的情况下也是如此。在flagdiscussion方法中,isFlaging被切换为"true"。所以点击标志按钮后,标志按钮仍然存在,没有任何变化。

我看到了类似的帖子AngularJs:为什么不;当我使用ng click时切换更新吗?并在点击语句后添加了x.isFlaging和this.isFlaging=true,但添加了这个,我甚至看不到标志按钮了。

有人知道为什么会发生这种事吗?

js代码:

$scope.flagDiscussion = function(id) {
        service.flagDiscussion(id);
        this.isFlagging = true;
    };

尝试:ng-switch on="isFlagging"

AngularJs:为什么不';当我使用ng click时切换更新吗?实际上得到了正确的答案,我只是忘记将scope x添加到js 中

最新更新