2016-05-11 10 views
0

Ich experimentiere mit SystemJS und habe Probleme beim Übergeben von Argumenten an meine exportierte Klasse.Übergeben von Argumenten an das ES6-Klassenmodul in SystemJS

in meinem html inlined Ich habe folgendes:

<script> 
    System.import('modules/accordion.js').then(function(module){ 
     module.accordion('HELLO THERE'); 
    }); 
</script> 

Die accordion.js Datei enthält die folgende Klasse:

class Accordion { 
    constructor(message) { 
     this.message = message; 
     this.buildAccordion(); 
    } 
    buildAccordion() { 
     console.log(this.message); 
    } 
} 

export var accordion = new Accordion(); 

Diese Datei ist bereits transpiled mit babel, bevor sie von SystemJS importiert .

Das resultierende Konsolenprotokoll enthält . Wie übergebe ich die Argumente richtig an diese Funktion?

+2

Sie können nichts damit machen - das 'Accordion' Objekt wurde instanziiert, wobei' message' gleich 'undefiniert' ist. "zu dieser Funktion" --- zu * was * Funktion? 'module.accordion' wenn nicht einmal eine Funktion, sondern ein Objekt. – zerkms

+0

Das macht Sinn. – nickspiel

Antwort

0

@zerkms wies darauf hin, dass die Nachricht, wenn die Klasse instanziiert wurde undefined war.

Wenn ich die Klasse aus dem Import Callback aufrufen, wird die Nachricht ordnungsgemäß übergeben. So, jetzt die Akkordeon-Datei sieht wie folgt aus:

export class Accordion { 
    constructor(message) { 
     this.message = message; 
     this.buildAccordion(); 
    } 
    buildAccordion() { 
     console.log(this.message); 
    } 
} 

Und mein Inline-Skript wie folgt aussieht:

<script> 
    System.import('modules/accordion.js').then(function(module){ 
     var accordion = new module.Accordion('HELLO THERE'); 
    }); 
</script> 

Jetzt bekomme ich HELLO THERE in der Konsole ausgegeben. :)