Meteor Iron-Router 通过 [data] 与 [params] 访问变量
Meteor Iron-Router accessing variables through [data] vs [params]
在 Meteor 项目中开发高级路由和嵌套 templates/data 上下文时,我试图区分 Iron Router 中路由的 data
和 params
组件及其最佳组件使用。
目标只是将简单的 variables/parameters 传递给模板。使用 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
用于数据上下文(通常使用),这种模式是否合适?
这接近于意见 - i-r 中的首选模式是使用 data:
来设置路由的数据上下文。这允许模板以非常标准的方式使用数据,包括可能根本不需要助手!
当 i-r 提供数据上下文时,模板的行为就像嵌套在另一个模板中并提供数据上下文一样 - 没有区别。使用 params
方法,模板现在只能用于 匹配的 路线。
在 Meteor 项目中开发高级路由和嵌套 templates/data 上下文时,我试图区分 Iron Router 中路由的 data
和 params
组件及其最佳组件使用。
目标只是将简单的 variables/parameters 传递给模板。使用 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
用于数据上下文(通常使用),这种模式是否合适?
这接近于意见 - i-r 中的首选模式是使用 data:
来设置路由的数据上下文。这允许模板以非常标准的方式使用数据,包括可能根本不需要助手!
当 i-r 提供数据上下文时,模板的行为就像嵌套在另一个模板中并提供数据上下文一样 - 没有区别。使用 params
方法,模板现在只能用于 匹配的 路线。