Meteor 从模式定义的表单中获取数据
Meteor get data from form that is defined by a schema
我正在尝试设置一个用于创建用户的表单。架构的电子邮件部分设置为数组:
...
"emails.$.address": {
type: String,
blackbox: true
},
"emails.$.verified": {
type: Boolean,
optional: true,
blackbox: true
},
...
我使用自动表单在模板中创建表单:
{{#autoForm id="addUser" type="method" meteormethod="createUserwRole" collection="Users" schema=schema resetOnSuccess="true" }}
<fieldset>
{{> afQuickField name="fName" id="fName"}}
{{> afQuickField name="lName" id="lName"}}
{{> afQuickField name="username" id="username"}}
{{> afQuickField name="emails" id="emails"}}
{{> afFormGroup name="roles" options=options firstoption="Select Role" type="select-multiple" id="roles"}}
<div>
<button type="submit" class="btn btn-primary" data-toggle="modal" data-target="#addUser">Submit</button>
<button type="reset" class="btn btn-default">Reset</button>
</div>
</fieldset>
{{/autoForm}}
然后在提交时我想抓取数据:
Template.addUser.events({
'submit #addUser': function(e, t) {
console.log("hit");
console.log(t);
e.preventDefault();
var email = t.find("#emails.0.address").value;
var username = t.find("#username").value;
console.log(email);
Meteor.call("createUserwRole", ({"email":email, "username":username}));
}
});
但正在尝试查找电子邮件。0.address returns 错误:
TypeError: null is not an object (evaluating 't.find("#emails.0.address").value')
做错的事情太多了。请仔细阅读简单模式和自动格式自述文件。这是一个非常强大的包,确实让很多事情变得更容易。
您的架构。
仅当字段类型为 Object
.
时才使用 blackbox: true
您的自动表单。
您同时指定了 collection="Users"
schema=schema
,请只指定一个。
您的表单处理。
使用 AutoForm.hooks
而不是自定义事件侦听器。
AutoForm.hooks({
添加用户: {
onSubmit:功能(文档){
console.log( doc.emais[0].地址 );
console.log(doc.username);
return 真;
}
}
});
我正在尝试设置一个用于创建用户的表单。架构的电子邮件部分设置为数组:
...
"emails.$.address": {
type: String,
blackbox: true
},
"emails.$.verified": {
type: Boolean,
optional: true,
blackbox: true
},
...
我使用自动表单在模板中创建表单:
{{#autoForm id="addUser" type="method" meteormethod="createUserwRole" collection="Users" schema=schema resetOnSuccess="true" }}
<fieldset>
{{> afQuickField name="fName" id="fName"}}
{{> afQuickField name="lName" id="lName"}}
{{> afQuickField name="username" id="username"}}
{{> afQuickField name="emails" id="emails"}}
{{> afFormGroup name="roles" options=options firstoption="Select Role" type="select-multiple" id="roles"}}
<div>
<button type="submit" class="btn btn-primary" data-toggle="modal" data-target="#addUser">Submit</button>
<button type="reset" class="btn btn-default">Reset</button>
</div>
</fieldset>
{{/autoForm}}
然后在提交时我想抓取数据:
Template.addUser.events({
'submit #addUser': function(e, t) {
console.log("hit");
console.log(t);
e.preventDefault();
var email = t.find("#emails.0.address").value;
var username = t.find("#username").value;
console.log(email);
Meteor.call("createUserwRole", ({"email":email, "username":username}));
}
});
但正在尝试查找电子邮件。0.address returns 错误:
TypeError: null is not an object (evaluating 't.find("#emails.0.address").value')
做错的事情太多了。请仔细阅读简单模式和自动格式自述文件。这是一个非常强大的包,确实让很多事情变得更容易。
您的架构。 仅当字段类型为
Object
. 时才使用 您的自动表单。 您同时指定了
collection="Users"
schema=schema
,请只指定一个。您的表单处理。 使用
AutoForm.hooks
而不是自定义事件侦听器。AutoForm.hooks({ 添加用户: { onSubmit:功能(文档){ console.log( doc.emais[0].地址 ); console.log(doc.username); return 真; } } });
blackbox: true