2016-05-03 7 views
0

Ich habe eine Suchfunktion in meinem Projekt, und ich muss in der Lage sein, Ergebnisse zu veröffentlichen, ohne Autopublish zu verwenden.Meteor: Erstellen Sie eine Suche (Filter) ohne Autopublish

html

<template name="search"> 
    <form id="searchform"> 
    <input type="text" id="kategori" placeholder="Sila masukkan maklumat carian."/> 
    <button>Carian</button> 
    </form> 
    <hr/> 
    <h3>Maklumat</h3> 
    <ol> 
    {{#each profil}} 
     <li>{{jenama}}</li> 
    {{/each}} 
    </ol> 
</template> 

js:

Template.search.events({ 
    "submit #searchform": function (e) { 
    e.preventDefault(); 
    Session.set("kategori", e.target.text.value); 
    } 
}); 

Template.search.helpers({ 
    profil: function() { 
    return Profil.find({ 
     kategori: Session.get('kategori'), 
    }); 
    } 
}); 

Antwort

1

Sie können einfach abonnieren zu einer gefilterten Publikation:

Client:

Template.search.events({ 
    "submit #searchform": function (e) { 
    e.preventDefault(); 
    Session.set("kategori", e.target.text.value); 
    Meteor.subscribe('profiles',Session.get('kategori')); 
    } 
}); 

Server:

Meteor.publish('profiles',function(kategori){ 
    return Profil.find({ kategori: kategori }); 
}); 

Wenn Sie keine anderen Abonnements derselben Sammlung haben, können Sie auch auf Ihre Helfer vereinfachen:

Template.search.helpers({ 
    profil: function() { 
     return Profil.find(); 
    } 
}); 

Da der Satz von Dokumenten wird durch Ihre Publikation definiert werden.

In der Praxis verwenden Sie normalerweise die gleiche Suche in Ihrem Helfer wie in der Publikation, nur um zu vermeiden, dass Dokumente aus anderen Publikationen angezeigt werden.

+0

Danke für die Antwort. Wie wäre es mit Eisen-Router? Ich brauche etwas Datenfunktion oder nicht. – nurul

+0

Nicht unbedingt, es sei denn, Sie suchen eine Route mit einem Parameter. –

Verwandte Themen