2016-05-11 6 views
0

SystemJSを試していて、エクスポートされたクラスに引数を渡そうとするときにいくつか問題が発生しました。SystemJSのES6クラスモジュールへの引数の受け渡し

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

accordion.jsファイルには、次のクラスが含まれています:

は、私は、次のしている私のHTMLにインライン化

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

export var accordion = new Accordion(); 

このファイルで事前transpiled SystemJSによってインポートされる前に、バベルで。

コンソールログには、undefinedが含まれています。どのように私はこの関数に引数を適切に渡しますか?

+2

「アコーディオン」オブジェクトは 'message'が' undefined'に等しくインスタンス化されています。 "この機能に" ---どのような*機能に? 'module.accordion'は関数でなくオブジェクトでもあります。 – zerkms

+0

それは理にかなっています。 – nickspiel

答えて

0

@zerkmsは、クラスがインスタンス化されたときのメッセージがundefinedであることを指摘しました。

インポートコールバックからクラスを呼び出すと、メッセージが正しく渡されます。だから今アコーディオンファイルは次のようになります。

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

そして、私のインラインスクリプトは次のようになります。今、私はコンソールにHELLO THERE印刷します

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

。 :)

関連する問題