Meteor JS-加载每个模板后启动功能

Meteor JS - Launch function after every templates are loaded

本文关键字:启动 功能 JS- 加载 Meteor      更新时间:2023-09-26

使用Meteor JS,我想在每次加载模板时启动一个基本的jQuery函数(它会调整一些元素的大小)。我试着在Meteor.startup()中调用这个函数,但没有成功。我还尝试在Router.onBeforeAction()上启动我的函数,但没有更多结果(我使用ironRouter)。

有什么方法可以做这样的事情吗:

Template.someTemplate.created = function(){
  myUpdateFunction(); 
};

但是,我不想在特定的模板上加载它,而是想在我的应用程序中的每个模板上自动加载它。

有没有办法简单地做到这一点?

谢谢。

这将在创建每个模板后记录其名称:

Template.prototype.created = function() {
    console.log(this.view.name);
}

然而,您的jquery将需要呈现模板,因此这可能会更好地工作:

Template.prototype.rendered = function() {
    console.log(this.view.name);
}

我已经通过包装Blaze._fireCallbacks:实现了它

Blaze._fireCallbacks = (function(_fireCallbacks) {
  return function(view, which) {
    _fireCallbacks(view, which)
    if(which === 'rendered') {
      //Add your logic here
    }
  }
})(Blaze._fireCallbacks)

可能不是最简单的解决方案。请在此便笺簿上查看演示。