我一直在使用反应式方法来帮助从某些异步流星方法返回我的数据。这似乎不适用于表单,我想知道它周围的工作是什么?我收到了:
不要在Tracker计算之外使用ReactiveMethod.call。
包含以下文件: submit.js
Template.makeTransaction.events({
'submit form': function(event){
event.preventDefault();
// construct the contact object that will be passed to the method
var add = event.target.receiver.value;
var amount = Number(event.target.amount.value);
var comm = event.target.comment.value
var request = {
address: add,
qty: amount,
comment: comm,
asset:'pounds'
};
return ReactiveMethod.call('sendAsset', request, function(err, result){
});
}
});
meteormethods.js
Meteor.methods({
sendAsset: function(request){
var sync=Meteor.wrapAsync(user.sendAssetToAddress, user);
var data = sync({request});
return data;
},
谢谢!
答案 0 :(得分:0)
事件处理程序(您的'submit form': function(event) {...}
)不是被动的。模板助手是,但他们不是一回事。
你正在做的事情有点奇怪,因为当事件触发时,事件处理程序只运行一次。所以在那个处理程序中,你应该使用接收Meteor.call结果的“普通”异步方法:
Meteor.call( 'sendAsset', request, function(err, result) {
if( err ) { /* Handle error */ return; }
// Here you use the result.
});
正如您现在所做的那样,从事件处理程序返回值有点无意义。没有任何东西可以接受这个价值。