Meteor.callを取得する方法テンプレートの値を戻しますか?
質問
私は
.
/server/test.js
Meteor.methods({
abc: function() {
var result = {};
result.foo = "Hello ";
result.bar = "World!";
return result;
}
});
/client/myapp.js
var q = Meteor.call('abc');
console.log(q);
この構造はコンソールundefined
に戻ります。
myapp.js
ファイルを変更する場合:
Meteor.call('abc', function(err, data) {
!err ? console.log(data) : console.log(err);
}
.
私のコンソールにObject
を受け取ります。
理想的にこれは私がすることができたいのですが、それはコンソールを述べています:Cannot read property 'greeting' of undefined
/client/myapp.js
var q = Meteor.call('abc');
Template.hello.greeting = function() {
return q.foo;
}
.
サーバオブジェクトからテンプレートにデータを渡す際のヘルプは大幅に感謝されます。私はまだJavaScriptとMeteorを学んでいます。
ありがとう!
他のヒント
Npm.require
には非同期の動作があるために発生します。それがMeteor.call
のコールバックを書く必要がある理由です。
ソリューションがあるだけで、install(mrt add npm)
を使用するだけで、これでMeteor.sync(//...)
という名前の関数を取得できます。これにより、Meteor.call()
の両方のゲームと非同期を実行できます。
リファレンス: http://www.sitePoint。COM / create-a-meteor-app-uniting-npm-module /
Rective変数を使用して、テンプレートに使用するためのMeteorメソッドの戻り値を取得できます。。 Meteorpad の作業デモンストレーション
私はゲットーソリューションに行きました。しかし、それは私のために働いています、それは私にとって重要です。以下は私のコードです。概念では、私は考えて、OPの問題を解決します。
クライアントのmain.js:
Meteor.setInterval(function() {
confirmLogin();
}, 5000);
.
これは5秒ごとにconfirmlogin()関数を実行します。
ConfirmLogin関数(クライアントのmain.js):
function confirmLogin() {
Meteor.call('loggedIn', function (error, result) {
Session.set("loggedIn", result);
});
}
.
LoggedInメソッド(サーバーのmain.js):
loggedIn: function () {
var toReturn = false;
var userDetails = Meteor.user();
if (typeof userDetails["services"] !== "undefined") {
if (typeof userDetails["services"]["facebook"] != "undefined") {
toReturn = true;
}
}
return toReturn;
},
.
関連ヘルパー:
loggedIn: function () {
return Session.get("loggedIn");
}
.