Maison  >  Article  >  interface Web  >  Pouvez-vous appeler des méthodes Meteor directement à partir des assistants de modèles ?

Pouvez-vous appeler des méthodes Meteor directement à partir des assistants de modèles ?

Linda Hamilton
Linda Hamiltonoriginal
2024-10-28 10:02:29383parcourir

 Can You Call Meteor Methods Directly from Template Helpers?

Utilisation des méthodes Meteor dans les assistants de modèles

Dans Meteor, les assistants de modèles fournissent des données réactives au modèle. Une question courante se pose : pouvons-nous accéder aux méthodes Meteor directement à partir de ces assistants ?

Considérez le code suivant :

<code class="javascrip">// server-side method
Meteor.methods({
  // viewTest method to return a string
  viewTest: function(str) {
    return str;
  }
});

// client-side helper
Template.helloWorld.helpers({
  // attempt to call 'viewTest' method
  txt: function() {
    return Meteor.call('viewTest', 'Hello World.');
  }
});</code>

Lors de la tentative de rendu du modèle, la fonction d'assistance renvoie une erreur, indiquant que la méthode n’existe pas. En effet, Meteor tente de restituer le modèle avant d'enregistrer la méthode sur le client.

Implémentation alternative

Il existe une approche mise à jour dans Meteor 0.9.3.1 qui résout ce problème. problème :

<code class="javascript">// client-side template
Template.helloWorld.helpers({
  txt: function() {
    return Template.instance().myAsyncValue.get();
  }
});

// client-side 'created' callback
Template.helloWorld.created = function() {
  // create a ReactiveVar instance and attach it to the template
  this.myAsyncValue = new ReactiveVar("Waiting for response from server...");
  
  // call the 'getAsyncValue' method and update the ReactiveVar when the callback fires
  Meteor.call('getAsyncValue', (err, asyncValue) => {
    if (err) console.log(err);
    else this.myAsyncValue.set(asyncValue);
  });
};</code>

Cette solution utilise des ReactiveVars, qui sont des sources de données réactives liées à des instances de modèle. En stockant le résultat de la méthode dans un ReactiveVar et en le mettant à jour dans le rappel, l'assistant peut accéder de manière réactive à la valeur renvoyée.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn