继我之前关于使用Meteor.call从服务器上的对象获取数据的帖子之后,我想知道一旦收到来自服务器的类似对象数据,这些相同的数据如何呈现HTML.这是一个简单的例子:
/server/svr.js
Meteor.methods({
test: function(text) {
var result = {};
result.foo = "<em>" + text + "</em>";
result.bar = text;
return result;
}
});
/client/del.js
Meteor.call('test', "Hello World - May 2012", function(err, data) {
if (err)
console.log(err);
Session.set('q', data);
});
Template.hello.greeting = function() {
return Session.get('q').foo;
};
Run Code Online (Sandbox Code Playgroud)
当我在标准流星应用程序中运行此代码时,我在浏览器窗口中看到:
Hello World!
<em>Hello World - May 2012</em>
Run Code Online (Sandbox Code Playgroud)
理想情况下,我希望包含html代码的会话变量已经渲染了传递给它的(在上面的简单示例中 - 在输出到浏览器时使第二行斜体化).我该如何完成这项工作?
在此先感谢您的帮助!
我正在尝试制作用于Meteor客户端的分页功能.因此,我需要知道服务器上的记录数.
在服务器上(在server/bootstrap.coffee中)我有这个代码:
Meteor.methods
ContactsCount: ->
Contacts.find().count()
console.log("Totalrecords: " + Contacts.find().count())
Run Code Online (Sandbox Code Playgroud)
调用服务器部分(它在控制台上显示正确的数字 - 40)
在客户端我有:
$.extend Template.pager,
GetRecordCount: ->
Meteor.call("ContactsCount", (error,result) ->
console.log('r', result)
Run Code Online (Sandbox Code Playgroud)
从浏览器控制台Template.pager.RecordCount()返回
undefined
r 30
我理解'undefined'是从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", …Run Code Online (Sandbox Code Playgroud) 我正在努力让Braintree Payments在Meteor应用程序中运行.我一直试图返回生成令牌(服务器端,通过Meteor方法)的结果,以便在客户端使用.
我试过这个:
/server/braintree.js
Meteor.methods({
createClientToken: function() {
var token = gateway.clientToken.generate({
customerId: this.userId
}, function(err, response) {
clientToken = response.clientToken
return clientToken
}
)
console.log(token)
return token
}
})
Run Code Online (Sandbox Code Playgroud)
返回true.
我也试过这个:
Meteor.methods({
createClientToken: function() {
var clientToken
gateway.clientToken.generate({
customerId: this.userId
}, function(err, response) {
clientToken = response.clientToken
}
)
console.log(clientToken)
return clientToken
}
})
Run Code Online (Sandbox Code Playgroud)
哪个回报undefined.
将function(err, response)被异步调用,是吗?如果是这样,那就是问题的解释.似乎尝试从异步函数返回值是Javascript中的一个痛点.我已经阅读了一些SO答案(就像这一个,这一个和这一个),但似乎没有一个让我朝着正确的方向前进.
另外,我相信我可能需要使用Meteor的wrapAsync方法,对吗?我已经试过这(发现这个和这个相关的等等吧题),但似乎仍不能得到正确的事情.
感谢任何反馈.
更新:
有关将Braintree与Meteor集成的工作方法,请查看 …