IronRouter事件功能

时间:2016-09-14 12:26:39

标签: meteor iron-router

加载Meteor应用程序时铁路由器是否有事件?

我想在模板' loading'显示,并在加载应用程序时。

2 个答案:

答案 0 :(得分:1)

要在加载时显示模板,请将此行放入路由器文件中。

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

其中loading是加载模板。

另外:来自atmospherejs的pcel:loading包。

答案 1 :(得分:0)

路由器挂钩:

您可以尝试使用铁路由器提供的路由器挂钩,例如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
    // ...
  }
});

从官方指南中,有许多选项可用于在路由器级别执行功能,具体取决于您希望何时启动操作:

  

<强> Available Hook Methods

     
      
  • onRun:首次投放路线时调用。如果路由因计算失效而重新运行,则不会再次调用它。这个   使其成为您想要的分析的理想选择   确保钩子只运行一次。请注意,这个钩子不会运行   如果路由通过热代码推送重新加载,则再次你必须打电话   this.next()继续调用下一个函数。

  •   
  • onRerun:如果路由重新运行,则会调用,因为其计算无效。与onBeforeAction类似,如果你想继续
      调用下一个函数,你必须调用this.next()。

  •   
  • onBeforeAction:在路线或&#34;行动&#34;之前调用功能运行。这些钩子表现得特别。如果你想继续打电话   你需要调用this.next()的下一个函数。如果你不这样做,   下游onBeforeAction挂钩,你的动作功能不会   被称为。
  •   
  • onAfterAction:在路线/动作功能运行或有机会运行后调用。这些钩子表现得像普通的钩子一样   你不需要调用this.next()来从一个移动到下一个。
  •   
  • onStop:路由停止时调用,通常在新路由运行之前调用。
  •   

插件:

如果您想在多条路线上重复使用相同的功能,可以像这样创建route plugins

Iron.Router.plugins.loading = function (router, options) {
  // this loading plugin just creates an onBeforeAction hook
  router.onBeforeAction('loading', options);
};

查看full guide以尝试更多可能对您有用的钩子和方法。