3

我有两个按钮来链接和取消链接社交登录提供商。

<button class="btn btn-default" ng-if="!user.facebook" ng-click="link('facebook')">
  Link Facebook
</button>

<button class="btn btn-danger" ng-if="user.facebook" ng-click="unlink('facebook')">
  Unlink Facebook
</button>

现在,每当我点击取消链接 Facebook时,我都会向服务器发送一个 POST 请求,然后在取消链接(或链接)帐户后立即发出单独的 HTTP 请求以获取最新的用户信息。

我不明白的问题是为什么在Unlink Facebook消失之前几乎有整整一秒的延迟。

我有两个按钮。它们不能同时处于活动状态,因为它们具有完全相反的条件。例如,如果我已经链接了一个帐户,当我尝试取消链接时,一旦收到数据,就会出现一个新按钮Link Facebook(应该如此),但在Unlink Facebook按钮消失之前几乎需要一秒钟。

我几乎可以肯定这与 AngularJS 生命周期管理有关。这可以解决吗?

更新:这个问题原来是.btnclass:上的这个 CSS 属性transition: background-color 0.25s ease-out;

4

1 回答 1

4

这不应该发生,但这取决于上下文(例如$watchers,您的 DOM 的复杂性等)。

在任何情况下,由于一次只能出现一个元素,因此使用它会更有意义ngSwitch

<div ng-switch="user.facebook">
    <button ng-click="user.facebook=true" ng-switch-default>
        Link Facebook
    </button>
    <button ng-click="user.facebook=false" ng-switch-when="true">
        Unlink Facebook
    </button>
</div>

另请参阅这个简短的演示

于 2014-09-12T08:51:22.137 回答