Meteor クライアントで使用するページネーション機能を作成しようとしています。したがって、サーバー上のレコード数を知る必要があります。
サーバー上 (server/bootstrap.coffee) には、次のコードがあります。
Meteor.methods
ContactsCount: ->
Contacts.find().count()
console.log("Totalrecords: " + Contacts.find().count())
サーバー部分が呼び出されます(コンソールに正しい番号が表示されます-40)
私が持っているクライアントで:
$.extend Template.pager,
GetRecordCount: ->
Meteor.call("ContactsCount", (error,result) ->
console.log('r', result)
ブラウザ コンソールから Template.pager.RecordCount() が返されます
未定義
r 30
「未定義」は Template.pager.RecordCount() からの戻り値であり、最初に返されることを理解しています。
結果が利用可能になると、コンソールに表示されます。
しかし、ページャー テンプレートで結果の値を取得するにはどうすればよいでしょうか。
Javaコールバックを数時間検索していますが、何を試してもうまくいきません。
助けてください。
ここにアップデートがあります。
無効化のドキュメントを見ました。しかし、この例はあまり役に立ちません。温度は、関数呼び出しのパラメーターを使用してクライアントに設定されます。したがって、コールバックは使用されません。コールバックは私の問題でした。
私はこのようにそれを解決しました:
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)
これは機能します。これが最善の解決策であるかどうか、私はまだ疑問に思っています。多くの Session.set() 呼び出しがあり、トリガーが多すぎる可能性があります。
### 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