【问题标题】:Meteor JS - Launch function after every templates are loadedMeteor JS - 加载每个模板后启动功能
【发布时间】:2016-01-27 08:38:40
【问题描述】:

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

有什么办法可以做到:

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

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

有没有办法简单地实现这一点?

谢谢。

【问题讨论】:

    标签: javascript jquery function dom meteor


    【解决方案1】:

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

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

    但是,您的 jquery 将需要渲染模板,因此这可能会更好:

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

    【讨论】:

      【解决方案2】:

      我已经设法通过包装 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

      【讨论】:

        猜你喜欢
        • 2015-04-04
        • 2014-02-24
        • 2014-02-22
        • 1970-01-01
        • 1970-01-01
        • 2015-06-23
        • 2016-08-15
        • 2016-11-21
        • 1970-01-01
        相关资源
        最近更新 更多