Meteor:将多个值传递给模板
我想创建一个与下面类似的模板/js组合。我希望有两个变量可用于“集合”模板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
标题:{{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来加载记录。项目列表是项目的数组。我的问题原来是我对反应性的愚蠢误解(我将在稍后公布原因)