2016-10-06 2 views
0

Я пытаюсь реализовать то и поиск моих вещей, поэтому я начал с сортировки и она работает:Поиск и сортировка на той же странице

Шаблон

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

Следующая я хотел имп lement Поиск на этой странице. Поэтому лучшим способом я смог найти 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

С EasySearch вы можете использовать два метода на вашем индексе, а именно getComponentDict() и getComponentMethods().

С getComponentDict() вы можете получить доступ к определению поиска и опции:

index.getComponentDict().get('searchDefinition'); 
index.getComponentDict().get('searchOptions'); 

У вас также есть соответствующие сеттеры для изменения поиска определения/опции.

getComponentMethods имеет mehods как

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 для получения дополнительной информации.