【问题标题】:With Meteor, why calling MyCollection.findOne affects other template functions?使用 Meteor,为什么调用 MyCollection.findOne 会影响其他模板函数?
【发布时间】:2012-08-30 14:03:46
【问题描述】:

我使用 findOne 只是为了为我的收藏获取一个特定元素。

但是,当我这样做时,包含这些集合的所有模板函数都将重新运行并刷新内容。内容相似,问题是我正在将样式应用于其中一些元素,而这些更新也只是重置了所有内容。更重要的是:那些刷新完全没用。

例如,我有这个模板:

Template.content.cars = function () {
    alert("I AM RERUN!");
    return Cars.find();
};

在另一个函数中,我正在这样做:

Cars.findOne({ _id: Session.get('current_car') }, {});

为什么要重新运行第一个模板?我做错了吗?

【问题讨论】:

    标签: meteor


    【解决方案1】:

    我不确定为什么要重新运行您的第一个模板:您确定没有发生其他事情吗?

    但作为对您问题的一般非答案:您应该期望依赖于整个集合的模板将重新运行多次(例如,当页面首次呈现时数据会逐渐加载)。使用流星,您需要以这种重新渲染不会导致问题的方式编写 HTML/CSS。

    在不了解您的问题的情况下,我真的不能说更多。

    【讨论】:

    • 我的项目可能发生了其他事情,当我加载页面时,这个方法运行了太多次:这真的很可疑。真正的目标是我将使用谷歌地图(或其他地图库),并根据集合插入精确点。但我不知道如何“听”这些变化是那个集合,我可以在几秒钟内重新创建它们,因为有些东西发生了变化......我不知道该怎么做。
    • Jordy - 看看这两个问题:stackoverflow.com/questions/10794409/…stackoverflow.com/questions/11260439/… 或许答案就在那里?
    • 谢谢汤姆,是的,这实际上是我昨天深夜发现的 :) 我会将您的标记标记为已接受的答案,因为这正是我真正想要的。我仍然不知道为什么该模板会重新运行这么多次,但没有闪烁或任何东西,所以我想没有任何重新渲染。加上在同一个集合上使用观察,我得到了完全符合预期的召回。我现在会坚持下去:)
    猜你喜欢
    • 2020-01-05
    • 2016-05-26
    • 1970-01-01
    • 2013-10-10
    • 1970-01-01
    • 2015-10-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多