Angular js:ng-click后Ng-switch没有更新

时间:2016-08-02 18:16:08

标签: javascript angularjs angularjs-ng-click angularjs-ng-switch

在我的原始代码中,我首先检查用户是否可以标记讨论,如果他们可以使用ng-switch,如果他们标记它,他们将看到成功消息:

<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位于false 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切换为&#39; true&#39;在flagdiscussion方法。所以在点击标志按钮后,标志按钮仍然存在且没有任何变化。

我看到了一个类似的帖子AngularJs: why doesn't ng-switch update when I use ng-click?并将x.isFlagging添加到交换机中,并且在click语句之后也添加了this.isFlagging = true,但是添加了这个帖子后,我甚至不再看到标记按钮了

任何人都知道为什么会这样吗?

js code:

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

2 个答案:

答案 0 :(得分:0)

尝试:ng-switch on="isFlagging"

答案 1 :(得分:0)

AngularJs: why doesn't ng-switch update when I use ng-click?实际上有正确的答案,我刚忘了将范围x添加到js中