2017-10-19 1 views
0

この構文を使用して 'コンポーネント'をループすると、EJSはそのタスクがオブジェクトではなく、task._idで置き換えられていると不平を言っています。EJS、ノードjs forEachループのインクルード

どのようなアイデアをお願いしますか?

<? tasks.forEach(function(task){ ?> 
     <?- include('_task'); ?> 
    <? }) ?> 
+1

正確に 'task'を' task._id'に置き換えていますか? – skirtle

答えて

1

あなたincludetaskを渡す方法を求めている場合、このようなものになるだろう:

<? tasks.forEach(function(task) { ?> 
    <?- include('_task', {task: task}) ?> 
<? }) ?> 

トップレベルのデータが自動的に含まれますが、ローカル変数を明示的に渡す必要がありますされ。 https://github.com/mde/ejs#includes

+0

それはまさに私が必要としていたものです:)ありがとう@スキル...私はそれがオブジェクトに「タスク」としてアクセスできると仮定しましたが、そうではありません。 – Kris

+1

@Kris 'include'を実行すると完全に別のテンプレートとしてレンダリングされるので、周囲のテンプレートから何も見ることができません。デフォルトでは、元のテンプレートと同じ 'locals'オブジェクトが渡されます。 EJSはあなたの 'task'変数が存在することさえ知りません。あなたの' 'ブロック内のコードはEJSの理解なしに直接テンプレート関数にコンパイルされます。 – skirtle

+0

意味があります。もう一度ありがとう:) – Kris

関連する問題