【问题标题】:Packing nonreactive libraries to reactive wrappers将非反应性库打包到反应性包装器
【发布时间】:2016-03-20 08:00:08
【问题描述】:

这样做的一般方法是什么?我对 fullcalendar 反应式包装器有问题。不幸的是,正式版(rzymek)不能正常工作,所以我决定创建自己的包装器。我使用渲染和销毁事件进行插件实例初始化和销毁​​,但是......它没有反应性地工作(要清楚,它的工作原理与 rzymek 版本完全一样)。怎么了?

编辑:我的问题不仅仅是反应事件,我希望完整的日历完全反应,这意味着初始化参数的每次更改都应该将日历重新呈现到新状态。

【问题讨论】:

    标签: javascript meteor fullcalendar meteor-blaze


    【解决方案1】:

    问题是,当 Blaze 的参数更改时,它不会重新呈现模板。这真的很奇怪。如何解决这个问题?使用 Template.currentData() ,它是返回实际模板数据上下文的反应源。下一步是:在 onRendered 回调中,我们启动自动运行,它监听模板数据上下文的变化并根据变化重新渲染日历。

    最后,我们有反应式全日历。

    【讨论】:

      【解决方案2】:

      Fullcalendar 响应式工作有点棘手。我最终使用的一个 OK hack 是将 Collection.find() 调用和 refetchEvent 包装在自动运行中,如下所示:

      Template.foo.onRendered(function() {
        this.autorun(function() {
          YourCollection.find({});
          $(".calendar").fullCalendar("refetchEvents");
        });
      });
      

      因此,您对 YourCollection 所做的任何更新都会触发一个 refetchEvent,该事件将执行您的 eventseventRender fullcalender 回调,然后您可以在其中更新日历。

      【讨论】:

      • 谢谢,但我需要所有初始化参数的这种行为。
      猜你喜欢
      • 2021-07-13
      • 2020-03-22
      • 1970-01-01
      • 2021-03-16
      • 2022-07-13
      • 2017-01-30
      • 1970-01-01
      • 2021-09-10
      • 2019-01-15
      相关资源
      最近更新 更多