在同一页面上搜索和排序

时间:2016-10-06 13:29:47

标签: meteor

我正在尝试对我的商品进行排序和搜索,所以我以排序开始并且有效:

模板

    <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,
  

我如何同时进行搜索和排序?

1 个答案:

答案 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