我正在阅读https://github.com/EventedMind/iron-router/blob/devel/Guide.md处的文档,我无法清楚地了解何时将函数传递给route()
方法以及何时传递对象。
使用数据渲染模板的示例 - 将函数作为第二个参数传递:
Router.route('/post/:_id', function () {
this.render('Post', {
data: function () {
return Posts.findOne({_id: this.params._id});
}
});
});
等待订阅完成的示例 - 将对象作为第二个参数传递:
Router.route('/post/:_id', {
// this template will be rendered until the subscriptions are ready
loadingTemplate: 'loading',
waitOn: function () {
// return one handle, a function, or an array
return Meteor.subscribe('post', this.params._id);
},
action: function () {
this.render('myTemplate');
}
});
如您所见,文档中的一些示例使用一种形式,一些使用另一种形式。一般来说,当我找到一些解决我的想法的文档时,它使用的形式与我在文档中其他地方的示例中采用的形式不同。
两种形式之间有什么关系?我该如何混搭?
答案 0 :(得分:1)
我目前正在了解这一点。我发现你可以根据自己的需要交替使用两种方法。
格式如您所述,您可以将函数作为路径定义的第二个参数传递。
我发现最大的区别是使用函数可以覆盖Router.config中的某些设置。例如,您必须注意如何定义渲染,而不是覆盖布局模板。
我觉得这是一个偏好问题,因为我已经看到了许多不同的如何设置路线的例子(例如。Iron router and hooks)。
基本上我使用Router.map()来尝试处理大多数标准设置,然后寻找定义钩子来控制通过路由器的流量。然后我希望根据需要设置自定义控制器,并随着项目的扩展。
总而言之,我觉得自己已经不再使用函数来定义路径了,因为它需要更多的显式性,尽管我想看到它有一个目的,想要更精细地处理路径,条件和参数。 / p>