防止重新渲染模板的功能

时间:2013-08-03 21:56:48

标签: javascript web meteor

解决。 事实证明这完全是另一回事。 感谢所有想要帮助的人,你们要统治!

2 个答案:

答案 0 :(得分:2)

我会在这里猜测,但需要看看你的代码,以确保我给你一个很好的答案:-)。您无法阻止被动数据源触发失效,但您可以在非反应性回调中运行某些代码,以确保代码 NOT 重新运行。

这里有两个例子来说明正在发生的事情。

Template.myTemplate.helpers({
  post: function () {
    var someReactiveVar = Session.get('value');

    return Posts.findOne({_id: 5});
  }
});

在上面的示例中,对post 5或Session的值的更改将触发模板重新运行。假设我们希望模板仅针对帖子的更改重新运行,而不是针对会话变量重新运行。我们可以这样做:

Template.myTemplate.helpers({
  post: function () {
    var someNonReactiveVar = Deps.nonreactive(function () { return Session.get('value'); });

    return Post.findOne({_id: 5});
  }
});

现在,仅仅因为我们调用Session.set('value','some other value')模板将不会重新运行,因为我们将get调用包装在Deps.nonreactive回调中。

答案 1 :(得分:0)

您是否看到过这个问题的答案?听起来像你在寻找什么

Meteor.js - temporarily prevent a template from re-rendering (disable reactivity)