Maison > interface Web > js tutoriel > Comment éviter les problèmes de rendu lors de l'appel de méthodes Meteor dans les assistants de modèles ?

Comment éviter les problèmes de rendu lors de l'appel de méthodes Meteor dans les assistants de modèles ?

Susan Sarandon
Libérer: 2024-11-03 17:47:03
original
350 Les gens l'ont consulté

How to Avoid Rendering Issues When Calling Meteor Methods in Template Helpers?

Utilisation des méthodes Meteor dans les aides aux modèles

Un scénario courant dans le développement de Meteor est la nécessité d'appeler des méthodes côté serveur depuis le côté client aides de modèle. Bien que l'importation directe de méthodes dans les assistants soit simple, cette approche peut entraîner des problèmes de rendu inattendus.

Considérons l'exemple fourni dans la question :

<code class="js">// lib/test.js
Meteor.methods({
  viewTest: function (str) {
    return str;
  }
});

// client/myView.js
Template.helloWorld.helpers({
  txt: function () {
    var str = Meteor.call('viewTest', 'Hello World.');
    return str;
  }
});</code>
Copier après la connexion

Cependant, lors du rendu du modèle, vous Vous remarquerez peut-être que le modèle ne reçoit aucune valeur de la méthode viewTest. Cela se produit parce que Meteor tente de restituer le modèle avant de terminer l'exécution de la méthode.

Solution améliorée

Pour surmonter ce défi, Meteor propose une approche alternative utilisant des variables réactives :

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

Template.helloWorld.created = function () {
  var self = this;
  self.myAsyncValue = new ReactiveVar("Waiting for response from server...");
  Meteor.call('getAsyncValue', function (err, asyncValue) {
    if (err)
      console.log(err);
    else
      self.myAsyncValue.set(asyncValue);
  });
};</code>
Copier après la connexion

Dans cette approche, une variable réactive myAsyncValue est créée dans le hook de cycle de vie créé par l'instance de modèle. La méthode Meteor getAsyncValue est ensuite invoquée et, une fois terminée, son résultat est défini sur la variable réactive.

En utilisant une variable réactive, toute modification de sa valeur est automatiquement propagée aux assistants correspondants, garantissant ainsi que le modèle est mis à jour de manière réactive une fois la méthode terminé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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal