2016-08-02 23 views
0

Dieser Meteor-Client-Code verwendet einen Vorlagenhelfer, um die anzuzeigenden Dokumente zurückzugeben, sowie eine Texteingabe mit der Klasse "filterBy", die ich zum Ändern des mongodb-Selektors verwenden muss.Sammlungsauswahl von der Texteingabe

Auf keyup, sollte es den Charakter zählen und die eingegebene Zeichenkette wie return myCol.find({myField: myCharacters})

Sollte ich einen Session.set (‚MyChar‘, jQuery-get-Eingang) verwenden anwenden und dann, daß der Wähler auf die mongodb gelten, oder gibt es einen besseren Weg? Dank

Template.abc.helpers({ 
    docs:() => { 
    return myCol.find({}); 
    } 
}); 
<input class="filterBy" type="text"> 

<template name="abc"> 
    <ul> 
    {{#each docs}} 
    <li class={{this.class}} data-id={{this.a}}>{{this.b}} {{this.d}}</li> 
    {{/each}} 
    </ul> 
</template> 

Antwort

0

Statt einer Session-Variablen zu verwenden, können Sie den Wert in einem ReactiveVar speichern:

Template.abc.onCreated(function() { 
    this.myChar = new ReactiveVar; 
}); 

Template.abc.events({ 
    'keyup .filterBy'(event, instance) { 
    // Get number of characters… 
    instance.myChar.set(numberOfCharacters); 
    } 
}); 

Im Helfer, erhalten den Wert des ReactiveVar:

Template.abc.helpers({ 
    docs() { 
    const myChar = Template.instance().myChar.get(); 
    return myCol.find… 
    } 
}); 

Auf diese Weise speichern Sie den Status, dh die Anzahl der Zeichen nicht global, sondern lokal an die Template-Ebene (die Sie auch Vorlage mehr wiederverwendbar macht).

Siehe auch: