加载Meteor应用程序时铁路由器是否有事件?
我想在模板' loading'显示,并在加载应用程序时。
答案 0 :(得分:1)
要在加载时显示模板,请将此行放入路由器文件中。
Router.configure({
layoutTemplate: 'layout',
loadingTemplate: 'loading'
});
其中loading
是加载模板。
另外:来自atmospherejs的pcel:loading包。
答案 1 :(得分:0)
您可以尝试使用铁路由器提供的路由器挂钩,例如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
// ...
}
});
从官方指南中,有许多选项可用于在路由器级别执行功能,具体取决于您希望何时启动操作:
<强> 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以尝试更多可能对您有用的钩子和方法。