【问题标题】:Meteor: return an array element as template dataMeteor:返回一个数组元素作为模板数据
【发布时间】:2014-02-11 17:51:16
【问题描述】:

通常在 Meteor 模板中,如果您通过诸如 iron-router 之类的路由器提供数据,您将返回一组文档(实际上是一个光标),您可以使用 #each 运算符遍历这些文档。但是,如果您只想从某个数组字段返回特定元素怎么办?我尝试了几件事,包括查询中的 $slice 运算符,但似乎没有任何效果。

【问题讨论】:

  • 您是否在问这样的问题:“我想从 Iron-router 传递一个数组作为 data 并显示元素 n”?或者您是否在询问有关从数据库加载数据并仅显示一个字段的问题?如果没有代码或更多解释,我真的无法分辨。
  • 是的,我想从 Iron-router 传递一个数组并显示元素 n。它实际上是一个子文档:'key: uniqueIdentifier, {myData: [ {field1: field1Value1, field2: field2Value1}, {field1: field1Value2, field2: field2Value2} ]' ...并说我想返回第二个元素我的数据。或者我可以返回整个文档,只要我知道如何深入到模板中所需的数组元素。
  • 好的,看看我在回答中给出的例子是否有帮助。您可能需要类似:return this['myData'][1];
  • 一个可能有帮助的技巧:只需在助手的第一行添加console.log(this)。这是查看您需要访问的结构的快速方法。
  • 嗯,这是一个我没有想到的好主意。但它向我展示了我希望看到的结构——仍然无法弄清楚如何访问该数组元素。这是更详细的版本:link

标签: arrays templates meteor


【解决方案1】:

这是一个将data 设置为数组的简单路由:

Router.map(function() {
  this.route('home', {
    path: '/',
    template: 'home',
    data: [{fruit: 'apples', count: 10}, {fruit: 'oranges', count: 5}]
  });
});

home 模板如下所示:

<template name="home">
  <p>{{snack.fruit}}: {{snack.count}}</p>
</template>

要将“苹果”显示为零食,您只需访问this 的第一个元素:

Template.home.helpers({
  snack: function() {
    return this[0];
  }
});

但是请注意,助手内部的this 实际上并不是一个数组——它将是一个与您提供的数据具有相同键值对的对象(显然还有一个yield 函数)。

【讨论】:

  • 太棒了。这需要我一些时间才能弄清楚。我应该能够完成这项工作。只是出于好奇,在这种情况下是否可以将参数传递给该模板助手? {{snack.fruit 参数}} 会起作用吗?
  • 不,您不能将参数传递给您的模板助手。您可以将参数传递给 handlebars 助手,例如{{formatSnackCount snack.count}} 其中formatSnackCount 已在Handlebars.registerHelper 注册。
  • 谢谢!学习 Meteor 基础知识时的另一个清晰点:)
猜你喜欢
  • 2015-04-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-10-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-21
相关资源
最近更新 更多