1

我是流星的新手,对模板如何处理数据反射有一个很大的误解。例如,我在数据库中有一些数据,如下所示:

{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!is 不工作 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>

提前致谢

4

1 回答 1

2

您必须使用其中一个{{#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>

这不会以任何方式起作用,如果返回对象数组,您应该将 inside 块括<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方法并遍历返回的值。

于 2013-01-30T12:44:00.637 回答