在我的原始代码中,我首先检查用户是否可以标记讨论,如果他们可以,我有 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 does not ng-switch update when I use ng-click? 并在 click 语句后将 x.isFlagging 添加到开关和 this.isFlagging = true ,但是添加了这个,我什至看不到标志按钮了。
有谁知道为什么会这样?
js代码:
$scope.flagDiscussion = function(id) {
service.flagDiscussion(id);
this.isFlagging = true;
};