我正在尝试对我的商品进行排序和搜索,所以我以排序开始并且有效:
模板
<button class="sort">Sort</button>
{{#each cvs}}
{{> Interviu}}
{{/each}}
JS:
Template.Interviuri.onCreated(function () {
var self = this
self.autorun(function () {
self.sortOrder = new ReactiveVar(-1)
})
Template.Interviuri.helpers({
cvs() {
const instance = Template.instance()
return Cvs.find({}, { sort: { createdAt: instance.sortOrder.get() } })
},
})
Template.Interviuri.events({
'click .sort'(event, instance) {
instance.sortOrder.set(instance.sortOrder.get() * -1)
接下来我想在同一页面上实施搜索。所以我能找到的最佳方式是EasySearch。 但是使用EasySearch,这意味着我必须改变我的项目的显示方式。然后排序再也不起作用了。
模板
<div class="searchBox pull-right">
{{> EasySearch.Input index=cvsIndex attributes=searchAttributes }}
</div>
{{#EasySearch.Each index=cvsIndex }}
{{> Interviu}}
{{/EasySearch.Each}}
集合
CvsIndex = new EasySearch.Index({
collection: Cvs,
fields: ['name'],
engine: new EasySearch.Minimongo()
})
JS
cvsIndex: () => CvsIndex,
我如何同时进行搜索和排序?
答案 0 :(得分:0)
使用EasySearch,您可以在索引上使用两种方法,即getComponentDict()
和getComponentMethods()
。
使用getComponentDict()
,您可以访问搜索定义和选项:
index.getComponentDict().get('searchDefinition');
index.getComponentDict().get('searchOptions');
您还有相应的设置器来更改搜索定义/选项。
getComponentMethods
有像
index.getComponentMethods().loadMore(integer);
index.getComponentMethods().hasMoreDocuments();
index.getComponentMethods().addProps(prop, value);
index.getComponentMethods().removeProps([prop])
从那里你可以设置你的道具,比如index.getComponentMethods().addProp('sort', -1)
,然后在你的MongoDB引擎中设置索引定义,从那个道具设置排序:
index = new EasySearch.index({
// other parameters
engine: new EasySearch.MongoDB({
sort: function(searchObject, options) {
if(options.search.props.sort) {
return parseInt(options.search.props.sort);
}
return 1;
}
})
});
有关详细信息,请参阅EasySearch Engines。