在我的流星项目中,我有一个这样的代码:
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();
?
答案 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函数每个模板只执行一次(加载时)。 作为其他模板(子项)的主容器(父)的主体(隐式)模板将在每个页面请求上执行。