これは同期呼び出しであるという提案にもかかわらず、現在、次の関数の戻り値を取得していません。私が非同期に行うと(function(error、blah){console.log(blah);})、正しい出力が得られます。ここでMeteor.call( "function"、arg)が同期的に発生していません
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>
もう少し説明できますか?おそらく短い例です。 – user1821985
私は、Meteorでは同期クライアント/サーバー/クライアント往復は不可能だと考えています。 'Meteor.call'は、node.jsサーバー上で実行されるときにのみ同期します。 'Meteor.call'のクライアント側呼び出しは、サーバーから結果を得るために' asyncCallback'引数を使わなければなりません。 'call'のクライアント側呼び出しは同期的ではありません。 (これには1つの例外がありますが、 'call'がサーバに全く接続できない特別な場合にあり、クライアントのみの同期' call'操作を行います)。 – apsillers