私はおそらくここで私のjavascriptの無知を示していますが、なぜこれが機能しないのですか?そして、どうすればこのコードを書き直して機能させることができますか?
// On the client
Template.tabs.title = function () {
var msg;
Meteor.call('getMessage', this.msg_id, function (error, result) {
console.log(result); // Prints out a perfectly fine message object
msg = result;
});
if (msg)
return msg.title;
else
return "(empty)"; // This is always the value that's shown on the page
};
この問題についての私の理解は、コールバックがmsg変数を設定する前に「if」ステートメントが実行されることです。そうですか?それともスコーピングの問題ですか?テンプレートから「呼び出し」を呼び出して、このようにすることもできますか?
ここでメソッドを使用している理由は、Messagesコレクションが膨大になる可能性があり、クライアントで全体としてサブスクライブできないためです。その一部のサブスクリプションがありますが、サブスクリプションが何であるかに関係なく、任意のメッセージを検索する必要もあります。