そのため、Meteor アプリに非常に単純な検索機能を実装しようとしています。これは非常に単純な医学辞書アプリなので、すべての用語とそれぞれの定義、発音などを含むコレクションが 1 つだけあります。私の目標は、ユーザーがフォーム入力を使用して検索クエリを入力し、関連する検索を表示することです。結果 (submit を押した後、keyup または keydown イベントの後は、今のところあまり重要ではありません。これは単なるプロトタイプです)。これが私がこれまでに持っているものです。
検索バー ( と呼ばれるテンプレートの一部header.html
)
<form class="navbar-form navbar-left" role="search">
<div class="form-group">
<input type="text" id="search" name="search" class="form-control" placeholder="Search">
</div>
<button type="submit" class="btn btn-default">Submit</button>
</form>
イベント ハンドラー ( と呼ばれるheader.js
)
Template.header.events({
'submit form': function(e) {
e.preventDefault();
var query = $(e.target).find('[name=search]').val();
// Log the query for testing
console.log(query);
//Log the object that is returned for testing
console.log(Dictionary.find({english: query}).fetch());
var result = Dictionary.find({english: query}).fetch();
}
});
結果のリスト (これは、 というテンプレートで機能しない部分ですitemsList.html
)
<template name="itemsList">
<div class="items">
{{#each dictionary}}
<ul>
<!-- itemPage just refers to the page individual items -->
<li><a href="{{pathFor 'itemPage'}}">{{english}}</a></li>
</ul>
{{/each}}
</div>
</template>
この場合{{english}}
、検索したいコレクション内のデータを参照します ( コレクション内の英語の単語Dictionary
)。
さて、これですべてが片付いたので、私の質問は次のとおりです。ここから何をすればよいでしょうか? ではheader.js
、 からの結果は探してconsole.log(Dictionary.find({english: query}).fetch());
いるオブジェクトです。したがって、基本的に、そのオブジェクトをitemsList.html
テンプレートに送信して、カーソルで反復できるようにするにはどうすればよいですか?
解決策は本当に単純なものだと確信しているので、私はこれに長く取り組んできたと思います。私のアプローチがすべて間違っている場合 (物事を検索するときに多くの人がセッションを使用しているのを見てきました)、どうすればよいか教えてください。また、私は Iron-Router を使用しており、自動公開をオフにしています。そのため、これらのいずれかに変更を加える必要がある場合は、それもお知らせください。ありがとう!