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>