流星.js的模板加载事件

Template onload event for meteor.js

本文关键字:加载 事件 js 流星      更新时间:2023-09-26

我知道 meteor 会为 DOM 元素公开诸如"单击"之类的事件,但我想知道加载模板或部分时是否有触发的加载事件?我将如何实现这一点?

谢谢。

对于从

0.4.0 预览版开始的 Meteor,可以使用 Template.myTemplate.created .

然而,在Template.myTemplate.created DOM还没有准备好。

如果需要操作 DOM,则可能需要改用Template.myTemplate.rendered并使用布尔值来跟踪 Template 对象中的状态,如下所示:

Template.myTemplate.rendered = function() {
    if(!this._rendered) {
      this._rendered = true;
      console.log('Template onLoad');
    }
}

以下应该有效。
一旦模板被添加到DOM并渲染,Meteor.defer就会被调用。

<template name="temp">
    //regular stuff
    {{invokeAfterLoad}}
</template>
Template.temp.invokeAfterLoad = function () {
  Meteor.defer(function () {
     $('mydiv').jquerify();
  });
  return "";
};

我建议这样做,而不是接受的答案,恕我直言,稍微不那么粗暴:

<template name="temp">
    {{aReactiveHelper}}
</template>
Template.temp.aReactiveHelper = function() {
  var someValue = Session.get('someValue');
  invokeAfterLoad();
  return someValue;
};
var invokeAfterLoad = function () {
  Meteor.defer(function () {
     $('mydiv').doSomething();
  });
};

假设您希望在模板加载后调用某些内容,因为它正在对反应式对象做出反应。

这样做的好处是无需向模板添加动画代码。