1

私はmeteorの初心者であり、テンプレートがデータリフレクションでどのように機能するかについて大きな誤解があります。たとえば、データベースには次のようなデータがあります。

{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のか理解できません!dataTryArr、などがまったく機能していないのですが{{#if dataTryArr}}Template.DataTry = function(){...}まったく機能していません{{#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>

これはまったく機能しません。オブジェクトの配列を返す場合は、ブロック<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 に答える