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 に答える