在某些模板上的流星回调呈现

时间:2016-01-28 13:45:55

标签: javascript meteor

在我的流星项目中,我有一个这样的代码:

baz = function() {
    // some jQuery add/remove class here...
};

Template.foo.onRendered(function() {
    baz();
});

Template.bar.onRendered(function() {
    baz();
});

Template.qux.onRendered(function() {
    // no baz() call
});

有没有更好的方法来完成此任务而不在某些模板渲染上重复baz();

2 个答案:

答案 0 :(得分:1)

Meteor 1.2.1允许您通过以下代码运行全局onRendered()函数:

Template.onRendered(function() {
    var that = this; //pass that into baz() if you need it
    Deps.afterFlush(function() {
        console.log('baz');
        baz();
    });
});

如果这不符合您的需求,并且您希望在每个页面上使用它,只需在菜单或页眉等常用模板中使用onRendered(),但这并不能保证您尝试的HTML将使用JQuery进行更改。

答案 1 :(得分:1)

与@Brett答案类似,您也可以使用Template.body.onRendered(function(){..

每个onRendered函数每个模板只执行一次(加载时)。 作为其他模板(子项)的主容器(父)的主体(隐式)模板将在每个页面请求上执行。