Aiuttamenti del modello di meteori accessibili su ciascuna chiamata
-
26-12-2019 - |
Domanda
Ho letto questo Meteor Template Helpers spara più volte e provatoper riprodursi senza collezioni coinvolte.
Quindi ho ottenuto Helper come questo:
Template.myTemplate.helpers({
test: function(){
console.log("Fired");
return {
name : "Foo"
};
}
});
.
e il modello sembra questo:
<template name="myTemplate">
{{test.name}}{{test.name}}
</template>
.
In console mi aspettavo di vedere "licenziato" solo una volta, ma l'helper viene chiamato in realtà due volte?Quindi se il mio helper sta accedendo alla raccolta e ricevi dati da lì, ogni volta che uso {{helper.key}} Esegue una query?È così che dovrebbe funzionare?
Soluzione
Sì Hai ragione il sistema del modello chiamerà un aiutante per ogni volta che lo usi nel modello.
Immagino cosa stai chiedendo è se questo è efficiente per le collezioni da quando vengono chiamati ancora e ancora.
Questo è il motivo per cui il .find()
di Meteor restituisce un cursore che è una sorta di cache.Puoi vederlo se provi a trovare qualcosa con .find()
, otterresti un oggetto ma non in realtà i tuoi dati.Il cursore recupera solo i dati come è necessario, quindi non è inefficiente come può sembrare.
Assegnazione .fetch()
recupera effettivamente i dati e non utilizza questa cache che è il motivo per cui è meno efficiente e spesso suggerito di non utilizzare come valore return
dell helper.