在Blaze

时间:2016-12-30 13:23:12

标签: javascript meteor meteor-blaze eventemitter

我们假设我们有以下抽象设置:

<template name="parent">
  {{> child childProps}}
</template>

和辅助函数:

Template.parent.helpers({
  childProps() {
    const instance = Template.instance();
    return {
      // whatever props we want
    };
  }
});

我想知道允许parent组件向其child组件发送事件的最佳方法是什么。

我至少可以想到两种方法:

  1. 不要发送事件,只能通过props控制孩子。这可能是一些人建议做的。问题是这种方法需要child来跟踪它的Template.currentData()上下文,并相应地对潜在的变化做出反应,这使得实现变得更加复杂和容易出错。

  2. instance.emitter = new EventEmitter()挂钩中创建onCreated并将其传递给child数据上下文,以便它可以为某些事件添加侦听器。这似乎更灵活,更不容易出错,但仍然有点复杂,因为孩子需要正确地管理听众清理不仅仅是在它的生命周期方法,例如, onDestroy但也是当前数据上下文更改的结果。

  3. 有没有人有其他想法如何在Blaze中实施此模式?是否有某种标准的方法,或者可能已经解决了这个问题的一些软件包?

0 个答案:

没有答案