0

Ich habe diesen Code, um entweder die Firebase zu überprüfen, die mit dem Internet verbunden ist oder nicht. Aber das Problem zeigt, dass meine this.total_downloaded=1 kann nicht eingestellt werden, auch ich wurde vor construct() als public total_downloaded=0 deklariert. Kann die Eigenschaft 'Variable' von null auf Firebase nicht setzen

enter image description here

Warum es wie ist das passiert? Kann ich meine Funktion nicht benutzen oder die Variable einfach einstellen?

Kann mir jemand helfen? Vielen Dank. Hier ist mein Code:

public this.total_downloaded = 0; 
//... 
var connectedRef = firebase.database().ref('/.info/connected'); 
connectedRef.once("value", function(snap) { 
    if (snap.val() === true) { 
     firebase.database() 
      .ref("last_update") 
      .once('value', (snap_0) => { 
       if (data.rows.item(0).value != snap_0.val().value) { 
        this.update_hok_baghu(db); 

        var query_insert_last_update = "UPDATE last_update SET value =" + snap_0.val().value + ""; 
        db.executeSql(query_insert_last_update, []).then(() => { 
        }, (error) => { 
         console.log("ERROR on update to last_update: " + JSON.stringify(error)); 
        }); 

       } else { 
        this.total_downloaded = 1; 
       } 
      }); 
    } else { 
     this.total_downloaded = 1; 
    } 
}); 

Antwort

2

Sie haben die reguläre Funktion als Callback function(snap) verwenden. Also die this in Ihrer else Bedingung bezieht sich auf die Callback-Funktion und nicht Ihre Klasse.

Pfeilfunktion:

connectedRef.once("value", (snap)=> { 
    if (snap.val() === true) { 
     firebase.database() 
      .ref("last_update") 
      .once('value', (snap_0) => { 
       if (data.rows.item(0).value != snap_0.val().value) { 
        this.update_hok_baghu(db); 

        var query_insert_last_update = "UPDATE last_update SET value =" + snap_0.val().value + ""; 
        db.executeSql(query_insert_last_update, []).then(() => { 
        }, (error) => { 
         console.log("ERROR on update to last_update: " + JSON.stringify(error)); 
        }); 

       } else { 
        this.total_downloaded = 1; 
       } 
      }); 
    } else { 
     this.total_downloaded = 1;//this will refer to class now. 
    } 
}); 
+0

Ihnen sehr danken. – Nere

Verwandte Themen