【发布时间】:2016-07-24 00:53:10
【问题描述】:
在 Meteor 项目中开发高级路由和嵌套模板/数据上下文时,我试图区分 Iron Router 中路由的 data 和 params 组件及其最佳用途。
目标只是将简单的变量/参数传递给模板。使用params 或data 哪个更好,在这种情况下有哪些主要区别或优势?
对我来说,最大的区别似乎是 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 用于数据上下文(如常用),那么这种模式是否合适?
【问题讨论】:
-
只是为了澄清上下文:我只是传递一个将模板标记为“可编辑”的参数,所以
params{edit:TRUE}或data{edit:TRUE}是我正在查看的选项。此外,我将通过应用程序的未来开发继续这种模式,因此我想在这一点上做出明智的选择。 -
我认为我将两者之间的区别理解为:
data主要用于模板和渲染,而params似乎最适合将参数传递给服务器以进行数据库查询。
标签: javascript meteor iron-router meteor-blaze