Maison > Article > interface Web > Pouvez-vous appeler des méthodes Meteor directement à partir des assistants de modèles ?
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!