Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 铁路由器与流星显示数据模板_Javascript_Meteor_Iron Router_Meteor Blaze - Fatal编程技术网

Javascript 铁路由器与流星显示数据模板

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浏览器控制台读取(

我正在使用Meteor的铁路由器(最新版本)。我有一个模板:

<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;
       }