流星将模态点击事件的值传递给父模板

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
        }
    })
})