2016-09-14 4 views
0

EBSにjsreportノードアプリケーションをホストしました。テンプレートを作成し、静的なWebサイト(内部でホストされている)からCSSとJavaScriptを使用しました。外部のjavascriptファイルでは、jsreportに必要な変数、つまり動作しない{{variablename}}のような変数を使用しています。テンプレートにJavaScriptのインラインを追加すると、それは機能します。JSReport Jsonデータが必要な外部javacript

これを指定するには別の方法があるはずですが、それを見つけることができないことがわかります。

+0

あなたが動作するコードではなく作品を行うコードを共有することができます。これはあなたの質問をより多くのユーザーフレンドリーにし、より良い答えを得るかもしれません! – alexbt

答えて

0

これは機能しません。 jsreportテンプレートエンジンは、参照されたスクリプトではなく、html出力のみをコンパイルして処理します。

あなたが外部スクリプトを配置するテンプレートコンテンツにプレースホルダを入れて:あなたは、このアプローチを試すことができますしかし

。我々は、インラインのjQueryを入れ

<script> 
    $$$myScript 
</script> 

<script> 
    $(() => { 
     alert('yes I have jquery inlined') 
    }) 
</script> 

スクリプトをこの場合はjqueryの中で、あなたの外部スクリプトをダウンロードjsreport custom server scriptを作成し、その内容

var getReq = require('request').get 

function beforeRender(req, res, done) { 
    getReq('https://code.jquery.com/jquery-3.1.0.min.js', (err, res, body) => { 
     req.template.content = req.template.content.replace('$$$myScript', body.toString()) 
     done() 
    }) 
} 

でプレースホルダを交換したいと言うことは、テンプレートの前に実行されますすることができますエンジンが実行されるので、テンプレートエンジンタグを使用することができます。

playground live demo here

関連する問題