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

时间:2016-04-04 12:58:10

标签: javascript meteor iron-router meteor-blaze

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

目标是仅将简单变量/参数传递给模板。哪个更好,使用paramsdata,以及这种背景下的主要差异或优势是什么?

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

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

然而,这似乎违反了惯例,所以我正在寻找任何我错过的原因。

使用数据的示例:

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

我可以访问模板" aRoute":

{{var}}

Versus 使用参数:

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

我需要先创建一个助手:

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

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

{{myVar}}

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

1 个答案:

答案 0 :(得分:2)

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

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