【问题标题】:Network Subscription does not change view immadiately网络订阅不会立即更改视图
【发布时间】:2016-10-17 11:42:39
【问题描述】:

我正在使用网络原生插件来检测网络状态(连接或未连接)并检测网络状态的变化(onConnect 和 onDisConnect)。

我想在网络断开连接时禁用一些按钮,并在我恢复连接时启用它们。因此,网络插件有 2 个函数,称为 onConnect 和 onDisConnect,它们返回一个 Observable。在订阅这些函数时,我想更改一个名为“isConnected”的类变量。下面的代码显示我想管理这个。

    ...    
    constructor(...){
        ....
        // network
        this.isConnected            = Network.connection !== "none";
        this.connectSubscription    = Network.onConnect().subscribe(()=>{
          this.updateConnection();
          Toast.showShortBottom("connected now !").subscribe();
        });
        this.disconnectSubscription = Network.onDisconnect().subscribe(()=>{
          this.updateConnection();
          Toast.showShortBottom("disconnected now !").subscribe();
        });
    }

    updateConnection(){
      this.isConnected = Network.connection !== "none";
    }

我的 html 文件包含一些必须根据连接状态“isConnected”启用/禁用的按钮..

...
      <button ion-button icon-only [disabled]="!isConnected" (click)="openModal()" shortVibrateOnTap>
        <ion-icon ios="ios-swap" md="ios-swap"></ion-icon>
      </button>
...
  <ion-col width-10>
    <button ion-button icon-only class="arrow-btn" [disabled]="!isConnected && onLastQuestion" (click)="fireSth()" shortVibrateOnTap>
      <ion-icon *ngIf="!onLastQuestion" ios="ios-arrow-forward" md="ios-arrow-forward"></ion-icon>
      <ion-icon *ngIf="onLastQuestion"  ios="ios-arrow-dropright-circle-outline" md="ios-arrow-dropright-circle-outline"></ion-icon>
    </button>
  </ion-col>
...

现在 onConnect 和 onDisConnect 函数触发了,但是我的按钮不会立即被禁用...我首先必须点击一个按钮或执行其他操作...如何强制视图更新按钮状态? ??

运行 ionic 2 rc 1

【问题讨论】:

    标签: cordova ionic2 observable


    【解决方案1】:

    ApplicationRef 似乎可以解决问题,请参阅here。但我仍然不明白为什么会发生这种情况..

    【讨论】:

      猜你喜欢
      • 2017-11-09
      • 2016-09-17
      • 1970-01-01
      • 2020-04-18
      • 1970-01-01
      • 1970-01-01
      • 2023-04-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多