在Meteor项目中开发高级路由和嵌套模板/数据上下文时,我试图区分Iron Router中路由的data
和params
组件及其最佳用途。
目标是仅将简单变量/参数传递给模板。哪个更好,使用params
或data
,以及这种背景下的主要差异或优势是什么?
对我而言,最大的区别似乎是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
作为数据上下文(如常用),这种模式是否合适?
答案 0 :(得分:2)
这与观点接近 - i-r中的首选模式是使用data:
来设置路由的数据上下文。这允许模板以非常标准的方式使用数据,包括可能根本不需要帮助程序!
当i-r提供数据上下文时,模板的行为就像嵌套在另一个模板中并提供数据上下文一样 - 没有区别。使用params
方法,模板现在只能用于匹配的路由。