传递 Collection ID 以在 Meteor 中生成表单
Passing Collection ID to generate Forms in Meteor
我有一个 collection "Country",它显示国家列表及其信息。图书选项将用户引导至 "Activity" 表单,该表单具有“收件人”、“发件人”等下拉字段。如何传递 "Country" ID,使 "Activity" 中的表单域属于用户单击其 Book 按钮的 "Country"。我想我应该使用反应性变量来存储国家 ID,然后执行操作以相应地更改表单字段。我对此还很陌生,不胜感激。
activity collection 的提交代码是:
Template.activitySubmit.onRendered(function () {
if (Session.get("submit-bypass") === true) {
Session.set("submit-bypass", false);
window.history.back();
}
$("#activity-goal").material_select();
});
Template.activitySubmit.events({
"submit form": function (e) {
e.preventDefault();
var title = $(e.target).find("#activity-title").val()
if (title.length === 0) {
throwError("You must have a title.");
$("activity-title").focus();
return;
}
var activty = {
title: title,
goal: parseInt($(e.target).find("#activity-goal").val())
};
Meteor.call("activityInsert", activty, function (error, result) {
if (error) {
throwError(error.reason);
return;
}
Session.set("submit-bypass", true);
Router.go("activityPage", { _id: result._id });
});
}
});
这就是你应该如何使用反应式 var 包
- 将包添加到您的项目,在终端
meteor add reactive-var
- 打开模板的 JS 文件,如
activitySubmit.js
- 像这样声明反应变量
Template.activitySubmit.onRendered(function () {
this.selectedCountry = new ReactiveVar(null);
});
- 然后根据需要更新反应变量并使用它
`
Template.activitySubmit.events({
'change #country': function(e){
var country = $(e.target).val()
var instance = Template.instance();
instance.selectedCountry.set(country);
},
'submit form': function (e) {
....
var instance = Template.instance();
var country = instance.selectedCountry.get(country);
....
}
});`
- 如果您想跨多个文件(全局)传递数据,您可以简单地使用 Session。
Session.set('myId', id)
和 Session.get('myId')
我有一个 collection "Country",它显示国家列表及其信息。图书选项将用户引导至 "Activity" 表单,该表单具有“收件人”、“发件人”等下拉字段。如何传递 "Country" ID,使 "Activity" 中的表单域属于用户单击其 Book 按钮的 "Country"。我想我应该使用反应性变量来存储国家 ID,然后执行操作以相应地更改表单字段。我对此还很陌生,不胜感激。
activity collection 的提交代码是:
Template.activitySubmit.onRendered(function () {
if (Session.get("submit-bypass") === true) {
Session.set("submit-bypass", false);
window.history.back();
}
$("#activity-goal").material_select();
});
Template.activitySubmit.events({
"submit form": function (e) {
e.preventDefault();
var title = $(e.target).find("#activity-title").val()
if (title.length === 0) {
throwError("You must have a title.");
$("activity-title").focus();
return;
}
var activty = {
title: title,
goal: parseInt($(e.target).find("#activity-goal").val())
};
Meteor.call("activityInsert", activty, function (error, result) {
if (error) {
throwError(error.reason);
return;
}
Session.set("submit-bypass", true);
Router.go("activityPage", { _id: result._id });
});
}
});
这就是你应该如何使用反应式 var 包
- 将包添加到您的项目,在终端
meteor add reactive-var
- 打开模板的 JS 文件,如
activitySubmit.js
- 像这样声明反应变量
Template.activitySubmit.onRendered(function () { this.selectedCountry = new ReactiveVar(null); });
- 然后根据需要更新反应变量并使用它
`
Template.activitySubmit.events({
'change #country': function(e){
var country = $(e.target).val()
var instance = Template.instance();
instance.selectedCountry.set(country);
},
'submit form': function (e) {
....
var instance = Template.instance();
var country = instance.selectedCountry.get(country);
....
}
});`
- 如果您想跨多个文件(全局)传递数据,您可以简单地使用 Session。
Session.set('myId', id)
和Session.get('myId')