对于Template.rendered的Hook,除非在这种情况下,我希望为每个渲染事件调用它

时间:2013-05-07 06:31:18

标签: meteor

如何调用函数,或者在Meteor中调用任何和每个Template.rendered事件时运行一些代码? (不仅仅是一个特定的模板)

(有没有办法可以做到这一点而不会超载流星的基本功能?)

谢谢!

1 个答案:

答案 0 :(得分:0)

一种方法是调用另一种方法:

dothis = function() {
    // Something
}

Template.hello.rendered = function() {
   dothis();
}

Template.hello2.rendered = function() {
   dothis();
}

如果您在渲染中没有其他任何事可做,您可以:

Template.hello2.rendered = dothis;

同样是批量处理的(如果在之前定义,运行时将覆盖任何其他呈现的内容):

for(tmpl in Template) {
    Template[tmpl].rendered = dothis;
};

(如果你已经定义了东西,你可以让它运行两个回调:)

for(tmpl in Template) {
    if(Template[tmpl].rendered) {
        Template[tmpl].rendered = function() {
            var originalfunction = Template[tmpl].rendered;
            var result = originalfunction.apply(this);
            dothis.apply(this);
            return result;
        }
    }
    else
    {
        Template[tmpl].rendered = dothis;
    }
};