So erhalten Sie das Ergebnis einer Meteor.call-Funktion in einer Vorlage
Ich versuche, eine Paginierungsfunktion für die Verwendung in einem Meteor-Client zu erstellen. Daher muss ich die Anzahl der Datensätze auf dem Server kennen.
Auf dem Server (in server / bootstrap.coffee) habe ich diesen Code:
<code>Meteor.methods ContactsCount: -> Contacts.find().count() console.log("Totalrecords: " + Contacts.find().count()) </code>
Der Serverteil wird aufgerufen (es wird die richtige Nummer auf der Konsole angezeigt - 40)
Auf dem Client habe ich:
<code>$.extend Template.pager, GetRecordCount: -> Meteor.call("ContactsCount", (error,result) -> console.log('r', result) </code>
Über die Browserkonsole wird Template.pager.RecordCount () zurückgegeben
nicht definiert
r 30
Ich verstehe, dass "undefiniert" die Rückgabe von Template.pager.RecordCount () ist und zuerst zurückgegeben wird.
Wenn das Ergebnis verfügbar ist, wird es der Konsole angezeigt.
Aber wie erhalte ich den Ergebniswert in meiner Pager-Vorlage?
Ich suche jetzt seit ein paar Stunden nach Java-Rückrufen, aber was auch immer ich versuche, ich kann es nicht zum Laufen bringen.
Bitte helfen Sie.
Hier ist ein Update.
Ich habe in der Dokumentation nach Ungültigkeit gesucht. Aber das Beispiel hilft mir nicht viel. Die Temperatur wird im Client mit einem Parameter im Funktionsaufruf eingestellt. Es wird also kein Rückruf verwendet. Der Rückruf war mein Problem.
Ich habe es so gelöst:
<code>Meteor.call("ContactsCount", myFunc) ### This is the call back function when the server function 'Meteor.call("ContactsCount", myFunc)' is called When the result from the server call is returned, this will be executed ### myFunc = (error, result) -> if !error pages = result / Session.get("page_size") Session.set "total_pages", Number(pages.toFixed(0) + 1) Session.set "total_records", result if error console.log(error) </code>
Das funktioniert. Ich frage mich immer noch, ob dies die beste Lösung ist. Ich habe viele Session.set () -Aufrufe und möglicherweise ist zu viel Triggerung aktiv.
<code>### This function will set the css classes for enabling or disabling the pager buttons in the Pager Template in myapp.html ### SetPagerButtons = -> Meteor.call("ContactsCount", myFunc) if Session.get("current_page") <= 1 Session.set "nextEnabled", "" Session.set "lastEnabled", "" Session.set "firstEnabled", "disabled" Session.set "previousEnabled", "disabled" Session.set "last_record", false else if Session.get("last_record") or Session.equals("current_page", Session.get("total_pages")) Session.set "nextEnabled", "disabled" Session.set "lastEnabled", "disabled" Session.set "firstEnabled", "" Session.set "previousEnabled", "" else Session.set "nextEnabled", "" Session.set "lastEnabled", "" Session.set "firstEnabled", "" Session.set "previousEnabled", "" Session.set "last_record", false </code>