単一のWorkouts
コレクションがあり、各オブジェクトにはcategory
と がありname
ます。HTML レイヤーでは、カテゴリ ヘッダーを作成し、その下にワークアウトのリストを表示しています。
私はそれを機能させていますが、流星やハンドルバーの方法でそれを行う方法はありません. のコンテキストとthis
、データをテンプレートに渡す方法を理解するのに苦労していると思います。
ここに私のテンプレート関数があります:
Template.categories.getCategories = ->
workouts = Workouts.find().fetch()
categories = _.map workouts, (workout) -> workout.category
_.uniq categories
Template.workouts.getWorkouts = ->
Workouts.find {category: this.toString()},
sort: ['category', 'name']
テンプレートファイルは次のとおりです。
<head>
</head>
<body>
{{> categories}}
</body>
<template name="categories">
{{#each getCategories}}
<h2>{{this}}</h2>
{{> workouts}}
{{/each}}
</template>
<template name="workouts">
{{#each getWorkouts}}
<div class="workout container">
<div>
{{name}}
</div>
<div>
{{units}}
</div>
</div>
{{/each}}
</template>
中Template.categories.getCategories
にthis
は、ありWindow
ます。しかし の内部では、文字列リテラルであるテンプレートの内部にTemplate.categories.getCategories
相当する文字列オブジェクトです。は?this
categories
繰り返しますが、これは機能します。その下にワークアウトのリストを含むカテゴリの見出しが表示されますが、これを行うより良い方法は何ですか?