流星客户端方法

时间:2013-12-12 14:40:15

标签: meteor

我在服务器端定义了一个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';
    }
});

2 个答案:

答案 0 :(得分:8)

请参阅Meteor docs,其中解释了客户端上的方法是存根,而不是实际方法:

  

如果确实定义了存根,当客户端调用服务器方法时,它也会并行运行其存根。 在客户端上,将忽略存根的返回值。 Stubs因其副作用而运行:它们旨在模拟服务器方法的结果,但不等待往返延迟。如果存根抛出异常,它将被记录到控制台。

由于结果被忽略,您会看到undefined。不要在客户端上使用方法来实现此目的。只需使用javascript函数。

答案 1 :(得分:2)

来自文档:

  

在客户端上调用methods定义与同名服务器方法关联的存根函数。

基本上,您需要在服务器端定义方法。还不清楚为什么你想在客户端上定义一个方法,然后在客户端上调用它。一个普通的javascript函数不能很好地完成这项工作吗?

如果我误解了你想要在这里实现的目标,请道歉。