Meter.call() 传递变量
Meter.call() pass variables
我正在尝试使用 Meteor.call() 并传入两个变量来完成该方法
Template.RegisterForm.events({
'submit form': function(event) {
event.preventDefault();
var emailVar = event.target.registerEmail.value;
var passwordVar = event.target.registerPassword.value;
Meteor.call('registerUser', emailVar, passwordVar )
}
});
但是当我调用该方法时,emailVar 和 passwordVar 没有通过。
registerUser: function (email, password) {
var id = Accounts.createUser({
email: email,
password: password
});
}
他们出现未定义??
你调用 Meteor 方法没问题,
var emailVar = event.target.registerEmail.value;
var passwordVar = event.target.registerPassword.value;
可能是您有问题的代码。 event.target
指的是启动事件的 DOM 元素,在本例中是表单。反过来,registerEmail
和registerPassword
将未定义
见
https://jsfiddle.net/fqp3a1mq/ 了解如何使用 jQuery 获取表单数据。
根据您的具体问题,一个干净的解决方案是:
Template.form.events({
'submit form'(event) {
const $form = $(event.target);
const formData = $form.serializeArray();
const params = {};
event.preventDefault();
// loop over our form data and create a params object for our method
formData.forEach(data => {
params[data.name] = data.value;
});
Meteor.call('methodName', params);
},
});
Meteor.methods({
methodName(params) {
...
},
});
使用这种方法,如果您有一个名为 registerEmail
的输入,那么它将在您的 Meteor 方法中作为 params.registerEmail
存在。
希望对您有所帮助。
我正在尝试使用 Meteor.call() 并传入两个变量来完成该方法
Template.RegisterForm.events({
'submit form': function(event) {
event.preventDefault();
var emailVar = event.target.registerEmail.value;
var passwordVar = event.target.registerPassword.value;
Meteor.call('registerUser', emailVar, passwordVar )
}
});
但是当我调用该方法时,emailVar 和 passwordVar 没有通过。
registerUser: function (email, password) {
var id = Accounts.createUser({
email: email,
password: password
});
}
他们出现未定义??
你调用 Meteor 方法没问题,
var emailVar = event.target.registerEmail.value;
var passwordVar = event.target.registerPassword.value;
可能是您有问题的代码。 event.target
指的是启动事件的 DOM 元素,在本例中是表单。反过来,registerEmail
和registerPassword
将未定义
见 https://jsfiddle.net/fqp3a1mq/ 了解如何使用 jQuery 获取表单数据。
根据您的具体问题,一个干净的解决方案是:
Template.form.events({
'submit form'(event) {
const $form = $(event.target);
const formData = $form.serializeArray();
const params = {};
event.preventDefault();
// loop over our form data and create a params object for our method
formData.forEach(data => {
params[data.name] = data.value;
});
Meteor.call('methodName', params);
},
});
Meteor.methods({
methodName(params) {
...
},
});
使用这种方法,如果您有一个名为 registerEmail
的输入,那么它将在您的 Meteor 方法中作为 params.registerEmail
存在。
希望对您有所帮助。