流星将模态点击事件的值传递给父模板
Meteor pass value from modal click event to parent template
我正在尝试在 Meteor 中制作一个可重复使用的确认模态。我有模式在打开和显示内容的意义上工作。这个想法是我可以在任何地方使用它,如果用户单击确认,它将 return 一个值,然后我可以 运行 我选择的任何服务器端方法。确认模板js很简单,长这样:
Template.confirm.events({
'click .confirm': function() {
// I want to let the template that opened the modal know the user has confirmed. How do I pass this information?
},
'click .cancel': function() {
//Close the modal
}
});
我知道有一些解决方案,例如甜蜜的警报,但我正在为我的 UI 使用 Zurb Foundation,并希望将所有内容保持在该框架内以实现一致性和控制。谁能帮我指明正确的方向?
非常感谢。
没有标准的方法来解决这个问题,但我建议将您在模态之外观察到的模态 a reactiveVar
传递,并在 reactiveVar
更改为时触发您的服务器端方法你想要的价值。一些框架代码可能如下所示:
html
{{> confirm triggerVar=myReactiveVar}}
模态 js
Template.confirm.events({
'click .confirm': function() {
this.triggerVar.set(true);
},
'click .cancel': function() {
this.triggerVar.set(false);
}
});
在你的控制器 js 中
Template.someTemplate.onCreated(function() {
this.myReactiveVar = new ReactiveVar();
})
Template.someTemplate.onRendered(function() {
// observe changes on your fancy reactiveVar
this.autorun(() => {
if (this.myReactiveVar.get() === true) {
// fire whatever server-side action you want
}
})
})
我正在尝试在 Meteor 中制作一个可重复使用的确认模态。我有模式在打开和显示内容的意义上工作。这个想法是我可以在任何地方使用它,如果用户单击确认,它将 return 一个值,然后我可以 运行 我选择的任何服务器端方法。确认模板js很简单,长这样:
Template.confirm.events({
'click .confirm': function() {
// I want to let the template that opened the modal know the user has confirmed. How do I pass this information?
},
'click .cancel': function() {
//Close the modal
}
});
我知道有一些解决方案,例如甜蜜的警报,但我正在为我的 UI 使用 Zurb Foundation,并希望将所有内容保持在该框架内以实现一致性和控制。谁能帮我指明正确的方向?
非常感谢。
没有标准的方法来解决这个问题,但我建议将您在模态之外观察到的模态 a reactiveVar
传递,并在 reactiveVar
更改为时触发您的服务器端方法你想要的价值。一些框架代码可能如下所示:
html
{{> confirm triggerVar=myReactiveVar}}
模态 js
Template.confirm.events({
'click .confirm': function() {
this.triggerVar.set(true);
},
'click .cancel': function() {
this.triggerVar.set(false);
}
});
在你的控制器 js 中
Template.someTemplate.onCreated(function() {
this.myReactiveVar = new ReactiveVar();
})
Template.someTemplate.onRendered(function() {
// observe changes on your fancy reactiveVar
this.autorun(() => {
if (this.myReactiveVar.get() === true) {
// fire whatever server-side action you want
}
})
})