Meteor 在不重写数据上下文的情况下将参数传递给模板

Meteor 在不重写数据上下文的情况下将参数传递给模板,meteor,Meteor,我希望在保持模板的原始数据上下文的情况下,将新参数传递给模板 原始数据上下文:{message:“hello”} {{>MyTemplateWithIcon=True} 数据上下文被{withIcon:True}覆盖 实际上,我的解决方案是这样包装数据 <code> {{> myTemplate originalData=this withIcon=True}} </code> 有更好的解决方案吗?您始终可以在助手中扩展当前上下文: Template.pa

我希望在保持模板的原始数据上下文的情况下,将新参数传递给模板

  • 原始数据上下文:{message:“hello”}
    
    {{>MyTemplateWithIcon=True}
    
  • 数据上下文被{withIcon:True}覆盖
实际上,我的解决方案是这样包装数据

<code>
{{> myTemplate originalData=this withIcon=True}}
</code>

有更好的解决方案吗?

您始终可以在助手中扩展当前上下文:

Template.parentTemplate.helpers({
iconContext:函数(){
var result=\ uu0.clone(此);
result.withIcon=true;
返回结果;
}
});
然后像这样使用它:


{{>myTemplate iconContext}
或者,您可以创建一个更通用的帮助器,如下所示:

Template.registerHelper('extendContext',函数(键,值){
var result=\ uu0.clone(此);
结果[键]=值;
返回结果;
});
然后从任何模板的html中选择键/值对:


{{>myTemplate extendContext'带图标'true}
{{>myTemplate extendContext'isAwesome'false}
这两种解决方案都比将原始数据隐藏在单独的字段中更可取,因为它使子模板保持通用性。

在此基础上构建以允许多个属性:

<template name="parentTemplate">
  {{> myTemplate extendContext withIcon=true label="Has Icon" }}
  {{> myTemplate extendContext withIcon=false label="No Icon" }}
</template>

这也应该起作用:
return u.extend({},this,data.hash)你能再详细一点吗?你为什么要做克隆(这个)?你为什么要做克隆(这个)?如果我将结果添加到子数据上下文中该怎么办?类似于iconContext:function(childDataLikeMsgPost){…childDataLikeMsgPost.withIcon=…}的东西会对我有很大帮助
Template.registerHelper('extendContext', function(data) {
  var result = _.clone(this);
  _.each(data.hash, function(value, key) {
    result[key] = value;
  })
  return result;
})