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

时间:2015-10-27 18:59:21

标签: javascript jquery function dom meteor

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

有没有办法做类似的事情:

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

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

有没有办法简单地实现这个目标?

感谢。

2 个答案:

答案 0 :(得分:2)

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

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

但是你的jquery将需要渲染模板,所以这可能会更好:

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

答案 1 :(得分:1)

我设法通过包装Blaze._fireCallbacks来实现它:

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

可能不是最简单的解决方案。查看演示on this pad