【问题标题】:Meteor Iron-Router accessing variables through [data] vs [params]Meteor Iron-Router 通过 [data] vs [params] 访问变量
【发布时间】:2016-07-24 00:53:10
【问题描述】:

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

目标只是将简单的变量/参数传递给模板。使用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 用于数据上下文(如常用),那么这种模式是否合适?

【问题讨论】:

  • 只是为了澄清上下文:我只是传递一个将模板标记为“可编辑”的参数,所以params{edit:TRUE}data{edit:TRUE} 是我正在查看的选项。此外,我将通过应用程序的未来开发继续这种模式,因此我想在这一点上做出明智的选择。
  • 我认为我将两者之间的区别理解为:data 主要用于模板和渲染,而params 似乎最适合将参数传递给服务器以进行数据库查询。

标签: javascript meteor iron-router meteor-blaze


【解决方案1】:

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

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

【讨论】:

  • 谢谢@michel-floyd。没有考虑到关于在路线期间访问数据与不使用路线的最后一点。我认为对于我的特定应用程序,我将使用data 中的一个字段,以允许将来对主模板进行非路由或嵌套使用。
猜你喜欢
  • 1970-01-01
  • 2014-05-07
  • 2013-11-21
  • 1970-01-01
  • 2023-03-12
  • 2016-01-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多