【问题标题】:Programmatically (not declaratively) render Meteor template以编程方式(非声明方式)渲染 Meteor 模板
【发布时间】:2015-10-01 17:46:40
【问题描述】:

我正在尝试使用 eventRender 自定义添加到 FullCalendar 的事件。我知道我可以直接从我的 eventRender 方法返回 HTML,但我更愿意以编程方式将事件数据与预定义的 Meteor 模板(带有关联事件)合并。

以前我可以使用Meteor.render(),但该功能不再可用。我对Template.dynamic 很熟悉,但这似乎只能以声明方式使用,而且我在这里看到的大多数问题都很老,所以请参阅已弃用的功能。

这是我想做的:

日历 - 事件填充和渲染:

Template.dashboard.rendered = function(){
  $('#calendar').fullCalendar({
    events: function(start, end, timezone, callback) {
      callback(Events.find().fetch()); 
    },

    eventRender: function(event, element) {
      // PROGRAMMATICALLY RENDER TEMPLATE
      // The following does not work - no data is attached 
      return Template.calendarEvent.renderFunction(event);
    }
  });
};

事件模板 HTML

<template name="calendarEvent">
  {{title}} 
  <!-- full layout for rendering event here -->
</template>

事件模板 JS

Template.calendarEvent.events({
  // define template event handlers
});

【问题讨论】:

    标签: meteor fullcalendar


    【解决方案1】:

    该函数没有被删除,它被重命名,并且在很久以前它也改变了行为(当 spark 被 blaze 替换时)。

    你要找的是Blaze.renderWithData

    请注意,它返回的是 Blaze.View,而不是 DOM 对象。

    要使其成为 dom 对象,您可以将其作为父对象提供:

    var renderedCalendarEvent = document.createElement("div");
    
    Blaze.renderWithData(Template.calenderEvent, event, renderedCalendarEvent);
    

    DOM 元素 renderedCalendarEvent 将对模板使用的任何响应式资源做出反应。

    如果您需要 HTML,您可以使用 Blaze.toHTMLWithData,但该 html 将保持静态。

    Blaze.toHTMLWithData(Template.calenderEvent, event);
    

    【讨论】:

    • 谢谢,这是完美的。非常感激。我已经离开这个项目几个月了,而 Meteor 在此期间发生了很大变化。我还没有机会熟悉新的 Blaze 环境。
    • 使用 Blaze.renderWithData() 或 Blaze.render() 时,事件似乎未正确连接。这是真的,还是我想知道我的错误?
    • @MichaelGraff 事件应该可以在 .render().renderWithData() 上正常工作,但不能在 .toHTMLWithData() 上正常工作。
    • 我同意它应该,但它似乎不适合我。我已经向流星人群提交了一个 github 问题;当我获得更多信息或发现这是我的错误时,我会更新它。
    • @MichaelGraff 你能发布一个 github 问题的链接吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-19
    • 2020-08-12
    • 1970-01-01
    • 1970-01-01
    • 2011-10-09
    • 1970-01-01
    相关资源
    最近更新 更多