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?

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top