Heim  >  Artikel  >  Web-Frontend  >  Können Sie Meteor-Methoden direkt über Vorlagenhilfsprogramme aufrufen?

Können Sie Meteor-Methoden direkt über Vorlagenhilfsprogramme aufrufen?

Linda Hamilton
Linda HamiltonOriginal
2024-10-28 10:02:29308Durchsuche

 Can You Call Meteor Methods Directly from Template Helpers?

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn