5

テンプレートを使用すると、次のような属性を持つ複数のドキュメントを表示できることを知っています。

// html
<template name="hello">
{{#each greetings}}
   {{message}}
{{/each}}
</template>

// js
Template.hello.greetings = function() {
   return Greetings.find();
}

各あいさつが見つかったドキュメントの Greeting.message を示します。

私の質問は、このテンプレートを 1 つのドキュメントだけに使用する方法です。(ドキュメントなしを含む)

JavaScript側からは、次のようなものを使用しますreturn Greetings.findOne({'id' : Session.get("greeting_id")});

ただし、テンプレートを使用する場合:

<template name="hello">
   {{message}}
</template>

エラーがスローされます: Uncaught TypeError: Cannot read property 'message' of undefined

アップデート

今のところ、以下の @tom-wijsman によって提案されたテンプレートを使用して、これを JS 側で使用します。

Template.hello.greeting = function() {
   var greeting = Greetings.findOne({'id' : Session.get("greeting_id")})
   if (greeting)
       return greeting;
   return {message: ""};
}
4

1 に答える 1

8

Handlebars.js には#with helperもあります。

<template name="hello">
    {{#with greeting}}
        {{message}}
    {{/with greeting}}
</template>

 

Template.hello.greeting = function() {
    return Greetings.findOne({'id' : Session.get("greeting_id")});
}
于 2012-05-15T13:53:18.073 に答える