Verwenden von Meteor-Methoden in Vorlagenhelfern
In Meteor stellen Vorlagenhelfer reaktive Daten für die Vorlage bereit. Es stellt sich häufig die Frage: Können wir direkt aus diesen Hilfsprogrammen auf Meteor-Methoden zugreifen?
Bedenken Sie den folgenden Code:
<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>
Beim Versuch, die Vorlage zu rendern, gibt die Hilfsfunktion einen Fehler aus. Zeigt an, dass die Methode nicht existiert. Dies liegt daran, dass Meteor versucht, die Vorlage zu rendern, bevor die Methode auf dem Client registriert wird.
Alternative Implementierung
In Meteor 0.9.3.1 gibt es einen aktualisierten Ansatz, der dieses Problem behebt Problem:
<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>
Diese Lösung verwendet ReactiveVars, bei denen es sich um reaktive Datenquellen handelt, die an Vorlageninstanzen gebunden sind. Indem das Methodenergebnis in einer ReactiveVar gespeichert und im Callback aktualisiert wird, kann der Helfer reaktiv auf den zurückgegebenen Wert zugreifen.
Das obige ist der detaillierte Inhalt vonKönnen Sie Meteor-Methoden direkt über Vorlagenhilfsprogramme aufrufen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!