2016-06-01 5 views
0

Unten sind meine zwei Klassen. Login und Aktivität. Ich möchte Login in Aktivität einfügen. Dies geschieht, nachdem Login bereits ausgeführt und Parameter gesetzt wurden. In der Datei 2 ist login.UserName immer undefiniert und alle anderen Objekte, die ich zu binden versuche, sind nicht definiert. Gibt es etwas, das mir fehlt, um richtig zu binden?Injizierte Abhängigkeit ist null

//file 1 
import {autoinject} from 'aurelia-framework'; 
import {HttpClient, json} from 'aurelia-fetch-client'; 
import {bindable} from 'aurelia-framework'; 
import 'fetch'; 

@autoinject 
export class Login{ 
    @bindable UserName:String 

    constructor(private http: HttpClient){ 
     ...redacted... 
    } 

    login(){ 
     this.UserName="test"; 
    } 
} 


//file 2 
import {autoinject} from 'aurelia-framework'; 
import {HttpClient, json} from 'aurelia-fetch-client'; 
import 'fetch'; 
import {Login} from 'login/src/login'; 

@autoinject 
export class Activity { 
    Login: Login; 

    constructor(private http: HttpClient, private login: Login) { 
     ...redacted... 
     this.Login=login; 
    }); 
} 

Antwort

1

Ich denke Activity Klasse/custom-Element mit einer anderen Instanz der Klasse Login/custom-Elements injiziert wird. Obwohl die Elemente in der Regel containergesteuerte "Singleton" -Lebenszeiten aufweisen, sind dies UI-Komponenten nicht. Ich denke, Sie könnten bekommen, was Sie arbeiten müssen, indem Sie die @singleton zu Ihrem Login UI-Komponente hinzufügen, aber Sie könnten besser eine separate Klasse erstellen, möglicherweise als "Benutzer", die Sie in die Login UI-Komponente und die Activity UI-Komponente injizieren können .

+0

Das war genau richtig. Ich habe aus irgendeinem Grund, obwohl UI-Komponenten auch Singletons waren ... was im Nachhinein albern ist. Ich trennte mich in eine separate Klasse und arbeite wie ein Traum, danke! –

Verwandte Themen