2016-01-28 136 views
2

在我的流星的項目,我有這樣的代碼:流星迴調渲染

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();呈現?

回答

1

流星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 ()在一些常見的模板中,如菜單或頁面標題,但是這並不能保證你試圖用JQuery改變的HTML會被渲染。

1

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

執行每個onRendered功能只有一次每個模板(加載時)。 作爲其他模板(子對象)的主容器(父對象)的主體(隱式)模板將在每個頁面請求上執行。

+0

也是一個很好的答案! –