我被迫将渲染的回调分配给我的所有模板。
直到0.9.0我曾经这样做过:
_.each( Template, function( template, name ) {
//...
template.rendered = function() {
//...
};
});
但是现在,Template是一个构造函数而不是一个对象,所以这个方法在这里不起作用。当使用Blaze渲染所有模板时,有没有办法将回调函数传递给所有模板或fire函数?
答案 0 :(得分:9)
这是我提出的一个快速解决方法,迭代每个Template
属性以查明它是否与模板定义相对应,如果是,则分配onRendered回调。
// make sure this code is executed after all your templates have been defined
Meteor.startup(function(){
for(var property in Template){
// check if the property is actually a blaze template
if(Blaze.isTemplate(Template[property])){
var template=Template[property];
// assign the template an onRendered callback who simply prints the view name
template.onRendered(function(){
console.log(this.view.name);
});
}
}
});
我不知道您的用例是什么,因此根据它可能有更好的解决方案。
答案 1 :(得分:-4)
使用Meteor 1.2.1,Template对象具有onRendered(hook)功能,可以完成所有模板' onRendered behavior。
Template.onRendered(function(){
var template = this;
Deps.afterFlush(function() {
console.log("triggering Jquery mobile component creation for "+template.view.name);
$(template.firstNode.parentElement).trigger("create");
});
});
Deps.afterFlush推迟更新(回调)是可选的,视您的应用需求而定。