Javascript 铁路由器与流星显示数据模板
我正在使用Meteor的铁路由器(最新版本)。我有一个模板:Javascript 铁路由器与流星显示数据模板,javascript,meteor,iron-router,meteor-blaze,Javascript,Meteor,Iron Router,Meteor Blaze,我正在使用Meteor的铁路由器(最新版本)。我有一个模板: <template name="home"> {{#each products}} <p>{{name}}</p> {{/each}} JJJJJJJJJJJJ </template> 当我运行页面时,我会看到带有此jjj的空页面,该页面是为测试添加的,以查看它是否加载了模板。 在产品集合中有两个带有名称的项目。我可以通过WEB浏览器控制台读取(
<template name="home">
{{#each products}}
<p>{{name}}</p>
{{/each}}
JJJJJJJJJJJJ
</template>
当我运行页面时,我会看到带有此jjj
的空页面,该页面是为测试添加的,以查看它是否加载了模板。
在产品集合中有两个带有名称的项目
。我可以通过WEB浏览器控制台读取(选择)、添加和删除此集合的项目,但该集合不会呈现在模板中。
错误可能是什么?Iron Router的
数据功能为模板设置数据上下文。在您的情况下,您将数据上下文设置为游标,但尝试使用产品
访问游标,该产品不作为辅助对象存在,无论是全局注册还是模板本身
有几种方法可以解决这个问题,但我建议让路由器简单地确定要呈现的模板,并让模板获取自己的数据
调整路由器:
Router.map(function () {
this.route('home', {
path: '/',
template: 'home'
}
);
模板帮助程序:
Template.home.helpers({
products() {
return Products.find();
}
});
或者,您可以在模板中使用this
关键字访问当前数据上下文:
<template name="home">
{{#each this}}
<p>{{name}}</p>
{{/each}}
JJJJJJJJJJJJ
</template>
{{{#每个这个}
{{name}}
{{/每个}}
JJJJJJJJJJJJJJ
但是,除非您可以通过模板的路径跟踪数据流,否则很难识别放入此
中的内容。这还将此模板与此路由紧密结合,因为路由本身决定模板的上下文。解决方案位于lib/router.js
,需要设置属性数据
,如下所示:
data : function () {
templateData = {
products: Products.find()
};
return templateData;
}
,与以前不同-返回产品。查找()
使用数据:
设置模板的上下文,这意味着此模板的
将成为您的光标。所以Products.find()
没有Products
字段。尝试类似于{{#each this}}
的方法。
data : function () {
templateData = {
products: Products.find()
};
return templateData;
}