【问题标题】:How to remove a rendered template in MeteorJS?如何在 MeteorJS 中删除渲染的模板?
【发布时间】:2014-05-02 10:16:36
【问题描述】:

我添加了一个动态渲染它的模板:

var myTemplate = Meteor.render(Meteor.template.foo);
document.body.appendChild(myTemplate);

现在我想从 DOM 中删除这个模板,但是这个模板有一个元素列表。

Meteor 渲染,使用documentFragment,所以我不能重用myTemplate 变量,因为它没有内容了。

使用 MeteorJS 从 DOM 中删除模板元素内容的正确方法是什么?

【问题讨论】:

  • 这会破坏代码。 body 可能有比我不想删除的模板更多的元素。
  • 我现在正在做类似的事情,但看起来不正确,因为 Meteor 将模板元素与事件绑定,所以如果我只是从 DOM 中删除,事件仍然会存在并且 GC 永远不会从边缘中删除这些元素。这就是为什么我正在寻找正确的方法。
  • Rob,“模板”在 Meteor 中的含义比你想象的要多——它不仅仅是一个 DOM,它是一个包含行为、事件和数据的完整组件。移除一件可能会导致另一件损坏。
  • @GabrielGartz:你想达到什么目的?在大多数情况下,这不是首先将模板添加到 DOM 的正确方法。您当然不想在事件或回调中执行此操作,而在帮助程序中您会以不同的方式执行此操作。你能给出一个更大的图吗?
  • @Rob,它不会改变 js FUNDAMENTALLY 与 dom 一起工作的方式,但它会导致 FUNDAMENTAL 方法被错误地使用。电动汽车的工作原理与传统汽车基本相同 - 但您通常不会尝试在其中泵油。

标签: javascript templates meteor


【解决方案1】:

在当前的渲染引擎下,我相信如果你给它的顶层元素赋予了 id myTemplate,这将令人满意地清理你注入的模板:

var thisNode = $('#myTemplate')[0];
Spark.finalize(thisNode);
$(thisNode).remove();

您可能知道,Spark 即将永远消失,所以这只是暂时的。我怀疑在 Blaze 中只需 .removeing 元素就足够了,但我无法用任何证据支持这一点,因为我还没有进行切换......

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-02-08
    • 2015-02-14
    • 2016-11-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多