所以我试图在我的 Meteor 应用程序中实现一个非常简单的搜索功能。这是一个非常简单的医学词典应用程序,所以我只有一个集合,其中包含所有术语及其各自的定义、发音等。我的目标是让用户使用表单输入输入他们的搜索查询,并显示相关搜索结果(在点击提交之后,在 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 并关闭了自动发布功能,因此如果需要对其中任何一项进行更改,请也告诉我。谢谢!