Meteor Iron-Router 通过 [data] 与 [params] 访问变量

Meteor Iron-Router accessing variables through [data] vs [params]

在 Meteor 项目中开发高级路由和嵌套 templates/data 上下文时,我试图区分 Iron Router 中路由的 dataparams 组件及其最佳组件使用。

目标只是将简单的 variables/parameters 传递给模板。使用 paramsdata 哪个更好,在这种情况下的主要区别或优势是什么?

对我来说,最大的区别似乎是 data 在 Blaze 模板中作为数据上下文可用,而访问 params 需要通过关联的帮助程序将该变量传递给模板。

我个人不喜欢在路由器配置中设置完整数据上下文(来自数据库查询)的想法,并且更愿意在助手中这样做。所以我觉得将这些参数传递给模板的最简单方法实际上是通过 data 对象,节省了必须编写的额外代码。

然而,这似乎违反了惯例,所以我正在寻找我遗漏的任何关于为什么会出现这种情况的信息。

一个使用数据的例子:

Router.route('aRoute', {data: {var: "this var"}});

我可以在模板中访问 "aRoute":

{{var}}

对比 使用参数:

Router.route('aRoute', {params: {var: "this var"}});

我需要先创建一个助手:

myVar : function () {return Router.current().params.var};

然后我可以访问模板中的对象"aRoute":

{{myVar}}

我有这个权利吗?我错过了什么吗?如果我没有真正将路由器的 data 用于数据上下文(通常使用),这种模式是否合适?

这接近于意见 - i-r 中的首选模式是使用 data: 来设置路由的数据上下文。这允许模板以非常标准的方式使用数据,包括可能根本不需要助手!

当 i-r 提供数据上下文时,模板的行为就像嵌套在另一个模板中并提供数据上下文一样 - 没有区别。使用 params 方法,模板现在只能用于 匹配的 路线。