当我生成带有参数的模板时,我丢失了数据上下文

I lose data context when i generate template with parameters

当我在#each helper 中生成子模板并添加参数时,我丢失了通常可见的数据上下文。

我通过

将数据字段传递给模板找到了解决方法
{{> productItem parameter="test" name=name details=details}}

,但对于更复杂的集合,那将是非常令人厌烦的......没有更好的选择来解决这个问题吗?

<template name="main">
    {{#each products}}
        {{> productItem parameter="test"}}
    {{/each}}
</template>

<template name="productItem">
    <div class="product">
        <p>{{name}}</p>
        <p>{{details}}</p>
        <p>{{parameter}}</p>
    </div>
</template>

和javascript:

Template.main.helpers({
    products: function(){
        return Products.find({});
    }
});

您正在创建一个新的上下文(它不会神奇地合并所有内容),但很容易包含原始上下文。

你去吧:-

 {{> productItem product=this parameter="test"}}

然后

<template name="productItem">
    <div class="product">
        <p>{{product.name}}</p>
        <p>{{product.details}}</p>
        <p>{{parameter}}</p>
    </div>
</template>

<template name="productItem">
    <div class="product">
       {{#with product}}
        <p>{{name}}</p>
        <p>{{details}}</p>
       {{/with}}
        <p>{{parameter}}</p>
    </div>
</template>