Meteor.call 절차의 범위에 상당히 문제가 있습니다. 내 범위 변수를 result.length로 설정하지 않습니다.
'takeaways': function (userId) {
var len = 0;
Meteor.call('userTakeaways', userId, function (error, result) {
if (error) {
console.log('there was an error finding the number of messages that were takeaways')
} else {
len = result.length; // result.length is 2
}
});
console.log(len); // still 0
return len;
}
도와주세요!
감사합니다 :)
len은 반응 변수가 아닙니다. 따라서 len 값이 변경되면 스페이스 바 값이 업데이트되지 않습니다.
따라서이 문제를 해결하기위한 두 가지 접근 방식 : 1. 반응 형 var / session 사용.
//Make sure you have install reactive var package
var len = new ReactiveVar(0);
Template['name'].helpers({
'takeaways': function (userId) {
Meteor.call('userTakeaways', userId, function (error, result) {
if (error) {
console.log('there was an error finding the number of messages that were takeaways')
} else {
len.set(result.length); // result.length is 2
}
});
console.log(len.get()); // You will get 2 when response come from you method call.
return len.get();
}
});
2. 'simple : reactive-method'패키지 사용
takeaways : function(userId){
return ReactiveMethod.call('userTakeaways', userId).length;
}
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다