[英]IronRouter event function
加載Meteor應用程序時,鐵路由器會發生事件嗎?
我想在顯示模板“正在加載”以及加載應用時運行一個函數。
要在加載時顯示模板,請將此行放入路由器文件中。
Router.configure({
layoutTemplate: 'layout',
loadingTemplate: 'loading'
});
其中loading
是加載模板。
另外: pcel:從atmomentjs加載包。
您可以嘗試將鐵路由器提供的路由器掛鈎(如waitOn
, onBeforeAction
等)與加載模板結合使用。
例如:
如果您有一條名為path
的路由和一條名為foo
的訂閱正在該路由上訪問:
Router.route('/path', {
// this template will be rendered until the subscriptions are ready
loadingTemplate: 'loading',
waitOn: function () {
// perform action while database subscription loads
console.log('Fetching foo...');
return Meteor.subscribe('foo');
},
onBeforeAction() {
// perform action before route loads
console.log('Loading...');
this.next();
},
action: function () {
// perform action when route loads
// ...
this.render('myTemplate');
},
onAfterAction() {
// perform action after route loads
// ...
}
});
在官方指南中,有許多選項可用於在路由器級別執行功能,具體取決於您要何時啟動操作:
onRun:在首次運行路線時調用。 如果路由由於計算無效而重新運行,則不會再次調用它。 這使它成為分析之類的理想選擇,您希望確保該掛鈎僅運行一次。 請注意,如果通過熱代碼推送重新加載路由,則此掛鈎不會再次運行。 您必須調用this.next()才能繼續調用下一個函數。
onRerun:如果路由由於計算無效而重新運行,則調用。 與onBeforeAction相似,如果要繼續
調用下一個函數,則必須調用this.next()。- onBeforeAction:在運行路由或“動作”功能之前調用。 這些掛鈎的行為特別。 如果要繼續調用下一個函數,則必須調用this.next()。 如果不這樣做,則下游onBeforeAction掛鈎,並且不會調用您的動作函數。
- onAfterAction:在您的路由/動作功能運行或有機會運行之后調用。 這些鈎子的行為類似於普通鈎子,您無需調用this.next()即可從一個移到另一個。
- onStop:在路線停止時調用,通常在運行新路線之前。
如果要在多個路由上重復使用相同的功能,可以創建如下的路由插件 :
Iron.Router.plugins.loading = function (router, options) {
// this loading plugin just creates an onBeforeAction hook
router.onBeforeAction('loading', options);
};
查看完整指南 ,嘗試更多可能對您有用的掛鈎和方法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.