我在服务器端定义了一个Meteor.method(在/ server中的.js中),我可以从客户端模板脚本中调用它(使用回调)。 我想做类似的事情,但希望这一切都是客户端,所以我将方法移动到客户端脚本,但结果返回为'undefined'。
Template.showDialog.events({
'click #clickme' : function() {
Meteor.call('foo', 'ola', function(error, result) {
alert('here');
alert(result);
});
}
});
Meteor.methods({
foo: function (myarg) {
return myarg+'CLI';
}
});
答案 0 :(得分:8)
请参阅Meteor docs,其中解释了客户端上的方法是存根,而不是实际方法:
如果确实定义了存根,当客户端调用服务器方法时,它也会并行运行其存根。 在客户端上,将忽略存根的返回值。 Stubs因其副作用而运行:它们旨在模拟服务器方法的结果,但不等待往返延迟。如果存根抛出异常,它将被记录到控制台。
由于结果被忽略,您会看到undefined
。不要在客户端上使用方法来实现此目的。只需使用javascript函数。
答案 1 :(得分:2)
来自文档:
在客户端上调用
methods
定义与同名服务器方法关联的存根函数。
基本上,您需要在服务器端定义方法。还不清楚为什么你想在客户端上定义一个方法,然后在客户端上调用它。一个普通的javascript函数不能很好地完成这项工作吗?
如果我误解了你想要在这里实现的目标,请道歉。