Tôi đang cố gắng tạo một chức năng phân trang để sử dụng trong ứng dụng Meteor. Vì vậy, tôi cần biết số lượng bản ghi trên máy chủ.Cách lấy kết quả của hàm Meteor.call trong một mẫu
Trên máy chủ (server/bootstrap.coffee) Tôi có mã này:
Meteor.methods
ContactsCount: ->
Contacts.find().count()
console.log("Totalrecords: " + Contacts.find().count())
Phần máy chủ được gọi là (nó sẽ hiển thị số lượng chính xác trên console - 40)
Trên khách hàng tôi có:
$.extend Template.pager,
GetRecordCount: ->
Meteor.call("ContactsCount", (error,result) ->
console.log('r', result)
Từ trình duyệt console Template.pager.RecordCount() trả về
không xác định
r 30
Tôi hiểu 'undefined' là sự trở lại từ Template.pager.RecordCount() và nó sẽ được trả về đầu tiên.
Khi kết quả có sẵn, nó sẽ được hiển thị trên bảng điều khiển.
Nhưng làm cách nào để nhận được giá trị của kết quả trong mẫu máy nhắn tin của tôi?
Tôi đang tìm kiếm cuộc gọi lại java trong vài giờ ngay bây giờ, nhưng bất cứ điều gì tôi cố gắng, tôi không thể làm cho nó hoạt động.
Vui lòng trợ giúp.
Đây là bản cập nhật.
Tôi đã xem tài liệu về việc vô hiệu. Nhưng ví dụ này không giúp tôi nhiều. Nhiệt độ được đặt trong máy khách với một paramater trong lời gọi hàm. Vì vậy, không có gọi lại được sử dụng. Gọi lại là vấn đề của tôi.
Tôi giải quyết nó như thế này:
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)
này hoạt động. Tôi vẫn tự hỏi nếu đây là giải pháp tốt nhất. Tôi có nhiều cuộc gọi Session.set() và có thể có quá nhiều kích hoạt xảy ra.
### 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
Hãy nhìn vào bản cập nhật cho câu hỏi của tôi. –
Cá nhân tôi đang làm những việc tương tự bằng cách gọi vô hiệu hóa trên bối cảnh chính xác khi gọi lại được thực hiện. Về cơ bản bạn đang làm những điều tương tự nhưng với các phiên. Tuy nhiên, tôi đang sử dụng những người trợ giúp cho phép bạn trả lại chuỗi html nhưng bạn có thể thực hiện theo các cách khác. Tôi sẽ thêm mẫu mã vào câu trả lời ở trên. – jonathanKingston
Tôi rất muốn xem mẫu mã sử dụng không hợp lệ. Tôi có ý tưởng rằng việc sử dụng Phiên quá nhiều sẽ kích hoạt nhiều hành động trên internet có thể tránh được. Mã đầy đủ cho ví dụ về máy nhắn tin của tôi là trên github: github.com/eric-naguras/MyApp.git –