Jak uzyskać wynik funkcji Meteor.call w szablonie

Próbuję utworzyć funkcję stronicowania do użycia w kliencie Meteor. Dlatego muszę znać liczbę rekordów na serwerze.

Na serwerze (w serwerze / bootstrap.coffee) mam ten kod:

<code>Meteor.methods
  ContactsCount: ->
    Contacts.find().count()
    console.log("Totalrecords: " + Contacts.find().count())
</code>

Część serwera jest wywoływana (wyświetla prawidłowy numer na konsoli - 40)

Na kliencie mam:

<code>$.extend Template.pager,
  GetRecordCount: ->
    Meteor.call("ContactsCount", (error,result) ->
    console.log('r', result)
</code>

Z konsoli przeglądarki Template.pager.RecordCount () zwraca

niezdefiniowany
r 30

Rozumiem, że „undefined” to zwrot z Template.pager.RecordCount () i jest zwracany jako pierwszy.

Gdy wynik jest dostępny, jest wyświetlany na konsoli.

Ale jak uzyskać wartość wyniku w moim szablonie pagera?

Od kilku godzin szukam zwrotów w Javie, ale cokolwiek próbuję, nie mogę go uruchomić.
Proszę pomóż.

Oto aktualizacja.

Sprawdziłem dokumentację pod kątem nieważności. Ale przykład mi nie pomaga. Temperaturę ustawia się w kliencie za pomocą parametru w wywołaniu funkcji. Nie ma więc żadnego wywołania zwrotnego. Oddzwonienie było moim problemem.

Rozwiązałem to w ten sposób:

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

To działa. Nadal zastanawiam się, czy to najlepsze rozwiązanie. Mam wiele wywołań Session.set () i być może jest zbyt dużo wyzwalania.

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

questionAnswers(1)

yourAnswerToTheQuestion