2017-03-22 3 views
0

Ich benutze bluetooh serielle von ionischen native.Ich möchte auf eine Variable in der Klasse definiert, wenn ich somendhing von der seriellen lesen. Ich setze den Wert für Variable, aber wenn ich es von innerhalb der Lesefunktion anzeigen möchte, zeigt mich undefined (um alert (this.test)). Was kann ich tun? Hier ist mein Code:Wie kann in dieser Situation auf Klassenvariablen zugegriffen werden?

import { Component } from '@angular/core'; 

    import {NavController, Platform} from 'ionic-angular'; 
    import {BluetoothSerial} from "ionic-native/dist/es5/index"; 

    @Component({ 
     selector: 'functions', 
     templateUrl: 'functions.html' 
    }) 
    export class Functions { 
     public data:any; 
     monStart:Boolean; 
     devices:any; 
     connected:Boolean; 
     onConnect:Boolean; 
     public test:any; 


     constructor(public navCtrl: NavController,platform:Platform) { 
    this.test="aaaa"; 
     platform.ready().then(() => { 

     }); 
     } 

     readDataFromSerial() { 
     BluetoothSerial.write("g").then((response)=> { 
      setTimeout(function() { 
       alert("write"); 
       BluetoothSerial.read().then((response)=> { 
       alert(this.test); 
       alert(response); 
       }) 
      }, 1000) 
      }) 
     } 

     showListOfDevices() { 
     BluetoothSerial.list().then((response)=>{ 
      alert("Devices:"+JSON.stringify(response)); 
      this.devices=response; 
     }) 
     } 


    } 

Antwort

4

Verwendung Pfeil => Funktion in der setTimeout Funktion:

setTimeout(()=> { 
      alert("write"); 
      BluetoothSerial.read().then((response)=> { 
      alert(this.test); 
      alert(response); 
      }) 
    }, 1000) 
+0

Vielen Dank! Es funktioniert :) – onner

+0

willkommen, vergessen Sie nicht, es als Lösung zu markieren;) –

1

Sie sind die this.test in einer Funktion Erklärung mit: setTimeout(function() { so müssen Sie nur, dass zu einem Pfeil ändern Funktion: setTimeout(() => {

wie folgt:

readDataFromSerial() { 
    BluetoothSerial.write("g").then((response)=> { 
     setTimeout(() => { // <-- the change goes here 
      alert("write"); 
      BluetoothSerial.read().then((response)=> { 
       alert(this.test); 
       alert(response); 
      }) 
     }, 1000) 
    }) 
} 
+0

Ich habe gerade gesehen, das gleiche wie "Bougarfaoui El Houcine" hat vorgeschlagen;) – Diullei

Verwandte Themen