簡體   English   中英

IronRouter事件功能

[英]IronRouter event function

加載Meteor應用程序時,鐵路由器會發生事件嗎?

我想在顯示模板“正在加載”以及加載應用時運行一個函數。

要在加載時顯示模板,請將此行放入路由器文件中。

Router.configure({
    layoutTemplate: 'layout',
    loadingTemplate: 'loading'
});

其中loading是加載模板。

另外: pcel:atmomentjs加載包。

路由器掛鈎:

您可以嘗試將鐵路由器提供的路由器掛鈎(如waitOnonBeforeAction等)與加載模板結合使用。

例如:

如果您有一條名為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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM