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>
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>
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!