我是流星上的新手,并且对模板如何与数据反射一起工作有一个很大的误解。
例如,我在数据库中有一些数据,如下所示:

{name: {firstName: "foo",
lastName: "bar"},
father: "buz"}


我反映的方式对我来说真的很恐怖。我只能这样反映它:

Js:

var Products = new Meteor.Collection("Products");

if (Meteor.isClient) {
  Template.DataTry.dataTryArr = function(){
     return DataTry.find({father: "buz"});
  };
}


的HTML:

<head><title>...</title></head>
<body>{{>DataTry}}</body>
<template name="DataTry">
  {{#each dataTryArr}}
    <p>Mr. {{father}} has a son {{name.firstName}}. They are both {{name.lastName}}</p>
  {{/each}}
</template>


它正在发挥作用和反映。但是我无法理解{{#each}}以及为什么我全部需要dataTryArr! w / o dataTryArr{{#if dataTryArr}}Template.DataTry = function(){...}等无法正常工作,而w / o {{#each}}却无法以任何方式工作(在那里要迭代什么?!)

拜托,请帮助我了解如何以这种方式反映简单数据

<head><title>...</title></head>
<body>{{>DataTry}}</body>
<template name="DataTry">
    <p>Mr. {{father}} has a son {{name.firstName}}. They are both {{name.lastName}}</p>
</template>


提前致谢

最佳答案

您必须使用{{#each}}{{#with}}块帮助器来迭代从模板帮助器返回的值。

如果您的模板助手返回了集合中的数据,则可能需要{{#each}}迭代器,以便在DOM中呈现返回的值。并且,如果模板帮助程序返回单个对象,则可以使用{{#with}}块。

并且您已经提出了以下建议:

<body>{{>DataTry}}</body>
<template name="DataTry">
    <p>Mr. {{father}} has a son {{name.firstName}}. They are both {{name.lastName}}</p>
</template>


这不会以任何方式起作用,如果<p> ... </p>返回对象数组,则应将{{#each}}括在Template.DataTry.dataTryArr()块中。

<template name="DataTry">
  {{#each dataTryArr}}
    <p>Mr. {{father}} has a son {{name.firstName}}. They are both {{name.lastName}}</p>
  {{/each}}
</template>


简而言之,{{#each dataTryArr}}将调用dataTryArr方法,并迭代返回的值。

10-04 21:32