检测Meteor中的模板更改

时间:2014-04-06 14:46:00

标签: meteor

我希望在更新基础集合时在屏幕上制作元素。

在我看来,每次更新模板时都会触发Template.my_template.rendered = function(){}。

理想情况下,第一次渲染模板时此函数不会触发。

这似乎是一个明显的用例,我错过了什么?

2 个答案:

答案 0 :(得分:0)

对于Meteor< 0.8

你应该使用Template.myTemplate.created第一次做某事。每次第一次更改包括时,文档Template.myTemplate.rendered都会被触发。如果你想将它限制在第二次并且在那之后发生变化(我猜这是你想要的),你必须编写一些自定义逻辑。目前没有支持它的Meteor api。


对于Meteor-0.8

似乎这个API在Meteor-0.8中经历了一些向后不兼容的changes

有一种优雅的方法来实现这一点,如Adaptation to the new Meteor rendered callback所述。基本上你应该通过调用一次辅助函数来修改你在模板的javascript中的变量附加的任何函数。例如,

var renderCount = 1;

var myHelper = function () {
  console.log("rendered #" + renderCount);
  renderCount++;
}; 

Template.myTemplate.myVariable = function () {
  myHelper();
  return this.name;
};

希望这会有所帮助。在同一个回购中还有另一种替代方法。你可能会喜欢那个。

答案 1 :(得分:0)

没有简单的解决方案;更多讨论:https://groups.google.com/forum/#!topic/meteor-talk/iQ37mTP3hLg