2017-04-03 5 views
0

Ich brauche Hilfe, um Daten von einer Aurelia-Seite zum anderen zu bekommen. Ich machte Login-Seite, wo ich den Benutzernamen und das Passwort fragen. Dann überprüfe ich, ob dieser Benutzer in der Datenbank ist. Das Problem ist, dass ich nicht weiß, wie ich mich an den Benutzernamen auf den nächsten Seiten erinnern soll. Ich brauche Benutzername hier:Aurelia: Daten sind undefiniert

import {HttpClient, json} from 'aurelia-fetch-client' 

export class User{ 

constructor(userData){ 
    this.username= userData.username; 
} 
userData = {} 
userList= [] 

getUser(x, y){ 
    console.log(x) 
    this.username = x; 
    console.log(y)  

    let client = new HttpClient(); 

    client.fetch('http://localhost:8080/users/'+ x) 
     .then(response => response.json()) 
     .then(data => { 
      if(JSON.stringify(data.password) === '"'+y+'"'){ 
       console.log("Okei") 
       var landingUrl = "http://" + window.location.host + "#/main"; 
       window.location.href = landingUrl 
      }else{ 
       console.log("Wrong password") 
       alert("Wrong password! Try again") 
      } 
     }) 


} 
} 

zu dieser Seite:

import {HttpClient, json} from 'aurelia-fetch-client' 
import { inject } from 'aurelia-framework' 
import { User } from '../home/index'; 

@inject(User) 
export class Diet{ 
constructor(userData) { 
    this.username = userData.username; 
} 

somethingSpecial() { 
    console.log(this.username); 
} 

dietData = {} 
dietList=[] 


addDiet(){ 

    let client = new HttpClient(); 

    client.fetch('http://localhost:8080/diet/add', { 
     'method': "POST", 
     'body': json(this.dietData) 
    }) 
     .then(response => response.json()) 
     .then(data => { 
      console.log("Server sent " + data.foodName); 
    }); 
    document.getElementById("form").reset(); 
    this.somethingSpecial(); 
} 

} 

ich den Konstruktor versucht hat, verwenden, aber jetzt heißt es, dass Userdata nicht definiert ist, so dass es keine Informationen erhalten von den ersten Seite. Was mache ich falsch? Vielen Dank!

+0

Sehen Sie sich die Sitzungsdaten Ihrer Benutzer im lokalen Speicher an - damit sollten Sie Ihre Probleme lösen. – Tom

+2

Oder schauen Sie sich diesen Artikel über den gemeinsamen Staat - https://ilikekillnerds.com/2016/02/shared-state-in-aurelia/ – Tom

Antwort

0

Verwenden Sie einen Singleton. In Aurelia ist das so einfach wie eine Klasse zu machen und sie zu injizieren.

Nehmen Sie das folgende Cut-Down-Beispiel aus einer meiner eigenen Anwendungen.

Hinweis: Dies war ursprünglich Typoskript, aber ich denke, ich habe es richtig gemacht.

Sobald dies erledigt ist, können Sie diese Klasse von überall aufrufen und die Benutzerinformationen verfügbar machen, ohne jedes Mal den Server aufrufen zu müssen.

Für weitere Informationen hierzu ist der Artikel thebluefox in den Kommentaren Ihrer Frage eine gute Lektüre.

Verwandte Themen