2017-05-09 60 views
0

我想更新變量上「確定」點擊彈出,但一些如何我無法更新變量。在控制檯中,它顯示更新的值,而不是在視圖中更新。離子2彈出處理函數不更新變量

this.barcodeScanner.scan().then((barcodeData) => { 
      let alert = this.alertCtrl.create({ 
       title: 'Barcode scanned Successfully!', 
       subTitle: ''+barcodeData.text, 
       buttons: [{ 
       text: 'OK', 
       handler:() => { 
        this.showForm = true; 
        this.memberVo["barcodeId"] = barcodeData.text; 
       } 
       }] 
      }); 
      alert.present(); 
     }, (err) => { 
      // An error occurred 
      console.log('barcode err--',err); 
      let alert = this.alertCtrl.create({ 
       title: 'Barcode scan Failed!', 
       subTitle: ''+err, 
       buttons: ['OK'] 
      }); 
      alert.present(); 
     }); 

這裏this.showForm = true;變量不考慮更新/ HTML

回答

0

你需要通知角度變化檢測更新視圖,使用NgZoneChangeDetectorRef

constructor(private zone: NgZone) {} 

然後做這樣的事情

this.zone.run(() => { 
    this.barcodeScanner.scan().then((barcodeData) => { 
     let alert = this.alertCtrl.create({ 
      title: 'Barcode scanned Successfully!', 
      subTitle: ''+barcodeData.text, 
      buttons: [{ 
      text: 'OK', 
      handler:() => { 
       this.showForm = true; 
       this.memberVo["barcodeId"] = barcodeData.text; 
      } 
      }] 
     }); 
     alert.present(); 
    }, (err) => { 
     // An error occurred 
     console.log('barcode err--',err); 
     let alert = this.alertCtrl.create({ 
      title: 'Barcode scan Failed!', 
      subTitle: ''+err, 
      buttons: ['OK'] 
     }); 
     alert.present(); 
    }); 
}); 

或使用ChangeDetectorRef

constructor(private cdRef: ChangeDetectorRef) {} 

然後

this.barcodeScanner.scan().then((barcodeData) => { 
    let alert = this.alertCtrl.create({ 
     title: 'Barcode scanned Successfully!', 
     subTitle: ''+barcodeData.text, 
     buttons: [{ 
     text: 'OK', 
     handler:() => { 
      this.showForm = true; 
      this.memberVo["barcodeId"] = barcodeData.text; 
      this.cdRef.detectChanges(); // this one 
     } 
     }] 
    }); 
    alert.present(); 
}, (err) => { 
    // An error occurred 
    console.log('barcode err--',err); 
    let alert = this.alertCtrl.create({ 
     title: 'Barcode scan Failed!', 
     subTitle: ''+err, 
     buttons: ['OK'] 
    }); 
    alert.present(); 
}); 

文檔:

https://angular.io/docs/ts/latest/api/core/index/ChangeDetectorRef-class.html

https://angular.io/docs/ts/latest/api/core/index/NgZone-class.html