어떻게 얻을 수 있습니다.호출이 반환 값을 위한 템플릿?
문제
해봤 을 이해하는 게시물에 대한 이 개념, 그러나,내가 실패하는 그것을 얻을 수 있습니다.나는 다음과 같은 간단한 설치:
/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
내 console.
이상적으로 이것은 무엇을 나는 다음과 같이 할 수 있지만,그것은 작동하지 않는 콘솔에서: Cannot read property 'greeting' of undefined
/client/myapp.js
var q = Meteor.call('abc');
Template.hello.greeting = function() {
return q.foo;
}
에 어떤 도움을 전달하는 데이터 서버에서 개체 템플릿으로 주시면 감사하겠습니다.저는 아직도 배우 JavaScript&있습니다.
감사합니다!
해결책
클라이언트에서 전달하지 않는 경우 콜백을 그리고 당신은 내 스텁,호출이 반환 정의되지 않은,그리고 당신은 것을 얻을 수있는 방법이 없는 반환 값의 방법입니다.는 것이기 때문에 클라이언트가 없 섬유 없습니다 그래서 실제로 어떤 방법으로 차단할 수 있습니다 원격 실행하는 방법입니다.
그래서,당신은 그것을하고 싶은 다음과 같다:
Meteor.call('abc', function(err, data) {
if (err)
console.log(err);
Session.set('q', data);
});
Template.hello.greeting = function() {
return Session.get('q').foo;
};
이 반동적으로 업데이트 템플릿을 한 번 데이터를 사용할 수 있습니다.
다른 팁
이 때문에 발생 Npm.require
는 비동기는 동작입니다.는 이유는 당신이 쓰기에 대한 콜백 Meteor.call
.
그러나 솔루션을 사용하여, install(mrt add npm)
을 얻을 것이라는 기능 Meteor.sync(//...)
이 두 작업을 수행할 수 있습니다 게임:동기/비동기에 Meteor.call()
.
참고: http://www.sitepoint.com/create-a-meteor-app-using-npm-module/
을 얻을 수 있습의 반환 값이 유성 방법을 사용하기 위해서 템플릿을 사용하여 반응성 변수.체크아웃 작업에 대한 데모 Meteorpad
가는 유대인 솔루션입니다.하지만 그것이 나를 위해,무엇이 문제다.아래에 나의 코드는 개념에서,내 생각,를 해결 OP 의 문제입니다.
에서 클라이언트의 main.js:
Meteor.setInterval(function() {
confirmLogin();
}, 5000);
이 실행 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;
},
관련 helper:
loggedIn: function () {
return Session.get("loggedIn");
}