2

アイテム(ログ行、ユーザー)を一覧表示し、それに応じてテーブルでスタイルを設定するテンプレートがいくつかあります。ここで、さまざまなアイテムタイプの文字列を検索し、それらを1つのページに表示する「検索」ページを追加しました。レイアウトに関しては、元のテンプレートを再利用したいのですが、明らかに検索によって返されたデータを使用します。

テンプレート自体をHTMLファイルに複製せずにそれを行うにはどうすればよいですか?

別の言い方をすれば、サブテンプレートのトップレベルテンプレートの実際のデータをどのように使用できますか。

小さな例:

<template name="user_list">
{{#each user_list}}
</template>

<template name="users">
{{> user_list}}
</template>

<template name="search">
{{> user_list}}
{{> group_list}}
</template>

.coffeeの場合:

 Template.users.user_list = ->
     [a,b,c,d]

 Template.search.user_list = ->
     [b,c]

たぶんこれは簡単なもので、私がMeteorについて本当にほとんど理解していないことを示しています。

4

2 に答える 2

0

使用するテンプレートを{{#each}}ステートメント内に配置するだけです。次に、配列内の各アイテムがその内部テンプレートのコンテキストになります。

HTMLファイル

<template name="users">
    <ul>
    {{#each UserArr}}
        {{> userItem}}
    {{/each}}
    </ul>
</template>

<template name="userItem">
    <li><a href="/edituser/{{_id}}">{{username}}</a> {{profile.name}}</li>
</template>

JSファイル

Template.users.UserArr = function()
{
    return Meteor.users.find({});
};
于 2013-03-24T02:25:47.887 に答える
-1

別の解決策は、リクエストをSession属性に入れ、ユーザーを照会するときにその存在を確認することです。デフォルトでSession.get("userQuery")は戻りますundefinedが、検索フィールドに何かを入力すると、それを次のように変更しますSession.set("userQuery", {type: "something"})

今コーヒースクリプトであなたは言うことができます:

Template.users.user_list = ->
   if(Session.get("userQuery"))
     [a,b,c,d]
   else
     [b,c]

または、MiniMongoクエリを使用することもできます。

良い点は、セッションのコンテンツに反応するため、HTMLが再レンダリングされることです。

于 2013-03-24T21:00:13.343 に答える