5

尽管有人建议这是一个同步调用,但我目前没有得到以下函数的任何返回值。如果我异步执行(即 function(error, blah) { console.log(blah); }),我会得到正确的预期输出。

Template.file_nav.files = function(path) {
  path = path || "/";
  var x = Meteor.call('get_files', path);
  return x;
}  

这是“get_files”方法的服务器端代码:

  Meteor.methods( {
    get_files : function get_files(path) {
      return [
        { "name" : " bob" }, { "name" : "alice" },
      ];
    }

此外,这是正确调用的 HTML 部分,以防相关:

<template name="file_nav">
  <div>
    <ul style="dirnav">
    {{#each files}}
    {{#if isDirectory this}}
      <li><a href="javascript:void(0)" onclick="get_directory('{{name}}')">{{
    {{else}}
      <li><a href="javascript:void(0)" onclick="get_file('{{name}}')">{{name}
    {{/if}}
    {{/each}}
    </ul>
  </div>
</template>
4

1 回答 1

2

如果您阅读相关文档的正文(http://docs.meteor.com/#meteor_call),您会看到它说:

“在客户端,如果你不传递回调并且你不在存根中,调用将返回未定义,你将无法获取方法的返回值”

所以你看到的行为是你应该期待的。我认为这里的文档可能会更清楚一些。

于 2012-11-13T23:33:11.817 回答