2017-06-13 5 views
0

HAFTUNGSAUSSCHLUSS: ich ein Noob bin .. sorryPassdaten auf eine andere Strecke ohne mit url Messing

Say I 2 verschiedene Komponenten haben, die Geschwister sind:

comp1 and comp2 

ich eine Route erstellen möchten aus Comp1 zu Comp2 mit einer Reihe von Daten. Wie kann ich dies erreichen, ohne eine fugly url-bar mit allem zu bekommen? Das gibt mir die Ausgabe

data-transmitter.js: 
export class DataTransmitter { 
    constructor() { 
    this.val= "a"; 
    } 
} 

comp1.js: 
import { DataTransmitter } from './data-transmitter'; 

@inject(DataTransmitter) 
export class comp1{ 
    constructor(DataTransmitter){ 
     this.DataTransmitter = DataTransmitter; 
    } 

    someMethod(){ 
     this.DataTransmitter.val = "b"; 
     console.log('comp1: ' + this.DataTransmitter.val); 
    } 
} 


comp2.js: 
import { DataTransmitter } from './data-transmitter'; 

@inject(DataTransmitter) 
export class comp2{ 
    constructor(DataTransmitter){ 
     this.DataTransmitter = DataTransmitter; 
    } 

    someMethod(){ 
     console.log('comp2: ' + this.DataTransmitter.val); 
    } 
} 

:

Ich habe versucht, eine eigene Klasse verwendet wird, lässt es DataTransmitter nennen

comp1: b 
comp2: a 

ich auch mit Eventaggregator versucht haben rumgespielt, aber keine Erfolg.

Gibt es eine Möglichkeit, mit Parametern zu routen, OHNE dass eine URL wie site/comp2?data=stuff&things=otherstuff&params=values&more=etc aussieht?

+0

Siehe https://stackoverflow.com/questions/31486384/how-to-create-a-ingle-on-service-in-aurelia –

+0

@ GabyakaG.Petrioli hast du meine Frage gelesen? Ich versuchte DI, aber war offensichtlich erfolglos, und dieser Thread sagt nur "Just DI" ... –

+0

Es hat einen anderen Vorschlag, die andere Antwort. –

Antwort

1

Sie möchten unbedingt eine Singleton-Klasse verwenden und diese dann in die Komponenten einbetten, für die Sie Ihre Daten benötigen. Der Link, den Gaby gepostet hat, ist definitiv das, was du machen willst.

Der Grund, warum Ihr veröffentlichter Code nicht funktioniert, ist, dass Sie versuchen, den inject Dekorateur zu verwenden, aber Sie importieren ihn nicht. Bitte sehen Sie sich dieses Arbeitsbeispiel an, was Sie auf Gist.run here tun möchten. Ich habe zwei Komponenten, Sie können klicken, um zwischen ihnen zu routen und den Wert festzulegen. Sie werden bemerken, dass der eingestellte Wert beibehalten wird, wenn Sie vor und zurück navigieren.

Verwandte Themen