Meteor:将多个值传递给模板

Meteor:将多个值传递给模板,meteor,handlebars.js,Meteor,Handlebars.js,我想创建一个与下面类似的模板/js组合。我希望有两个变量可用于“集合”模板 标题:{{Title}} {{{#每项} {{>项目} {{/每个}} {{item_title}} 其中javascript函数类似于: Template.collection.data=function(){ var record=record.findOne({whatever:value}); 返回{title:record.title,items:record.items} } 我尝试过使用handl

我想创建一个与下面类似的模板/js组合。我希望有两个变量可用于“集合”模板


标题:{{Title}}
    {{{#每项} {{>项目} {{/每个}}
  • {{item_title}}
  • 其中javascript函数类似于:

    Template.collection.data=function(){
    var record=record.findOne({whatever:value});
    返回{title:record.title,items:record.items}
    }
    
    我尝试过使用handlebar{{#with data}}helper并返回一个如上所述的对象,但这只会使模板崩溃。我尝试创建一个“顶级”函数,如:

    Template.collection=function(){…}
    
    但这也破坏了模板

    我试图避免的是使用两个单独的函数(一个是Template.collection.title,一个是Template collection.items),其中每个函数都调用记录集合上的findOne,而实际上它是同一个模板,一个调用就足够了

    有什么想法吗?

    Template.collection=function(){…}
    
    Template.collection不是一个函数,它是一个实例,因此是一个对象

    您可以在控制台中键入
    Template.collection
    以查看基本内容,也可以键入
    Template.collection.
    并自动完成以查看其方法和字段


    举个例子,TODO确实不像你在评论中所概述的那样包含一个。因此,可在此处找到其使用示例:

    下面是我在当前master和devel分支上尝试的另一个示例:

    
    测试
    {{>你好}
    {{{与作者}
    通过{{firstName}{{lastName}}
    {{/与}}
    
    其中的JS部分:

    if(Meteor.is_客户端){
    Template.hello.author=函数(){
    返回{
    名字:“查尔斯”,
    姓氏:“乔利”
    };
    };
    }
    
    您希望避免使用两个函数的具体原因是什么

    从您的代码示例中,我看到一个问题:第一个模板正在使用以下行调用第二个模板:

    {{> item}}
    
    但是您的第二个模板不是“items”。我认为您的第二个模板应该这样命名:

    <template name="item"> 
    
    
    
    似乎第一个和第二个都有助手函数就足够简单了。虽然我还没有让它与我自己的代码一起工作,但我相信第二个helper函数会希望使用“this”约定来引用您所引用的集合


    干杯-大叫

    汤姆的回答是正确的。我想插话补充一下,在我的场景中,#with失败的原因是由于meteor的“反应性”特性,我第一次调用加载模型导致“未定义”,我没有检查它。几分钟后,它被加载正常。 寓意是做类似的事情

    var record = Record.findOne({whatever:value})
    if (record) {
      return record;
    } else {
      // whatever
      return "loading"
    }
    

    为什么不返回记录本身呢?我相信你也可以使用
    {{something.something}}
    这也是我想的,但它不起作用。不仅不起作用,如果我把{{record.field{u a}和{record.field{u b}放进去,它会调用'record'函数两次,这违背了我试图做的目的。嗯,{{something}应该起作用,我不明白为什么它不会起作用。看一看todos示例,我非常确定#with在那里的使用方式与您希望的方式相同……事实上,#with不在todos示例中。。。不,它不起作用。如果是在todos示例中,我不会问这个问题:)是的,模板命名是一个输入错误。应该是收集物品。在任何情况下,两个函数意味着两次调用mongo来加载记录。项目列表是项目的数组。我的问题原来是我对反应性的愚蠢误解(我将在稍后公布原因)