【问题标题】:Angular js: Ng-switch is not updating after ng-clickAngular js:ng-click后Ng-switch没有更新
【发布时间】:2016-08-02 18:16:07
【问题描述】:

在我的原始代码中,我首先检查用户是否可以标记讨论,如果他们可以,我有 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 处于错误的 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 仍然是 false,即使在它被点击时也是如此。 isFlagging 在 flagdiscussion 方法中切换为“true”。所以点击标志按钮后,标志按钮仍然存在,没有任何变化。

我看到了类似的帖子AngularJs: why doesn't ng-switch update when I use ng-click?,并在点击语句后添加了 x.isFlagging 和 this.isFlagging = true ,但是添加了这个,我什至看不到标志按钮了。

有人知道为什么会这样吗?

js代码:

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

【问题讨论】:

  • @DavidH。我在js代码中添加了,但它只是在数据库中标记它并使标记为true

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


【解决方案1】:

试试:ng-switch on="isFlagging"

【讨论】:

    【解决方案2】:

    AngularJs: why doesn't ng-switch update when I use ng-click?居然有正确答案,我只是忘了在js中添加范围x

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-02
      • 2014-09-28
      • 1970-01-01
      • 2015-06-16
      • 1970-01-01
      • 2014-08-15
      相关资源
      最近更新 更多