【问题标题】:Meteor Spacebars {{#each}} counter and first/last testsMeteor Spacebars {{#each}} 计数器和第一个/最后一个测试
【发布时间】:2015-01-08 14:31:04
【问题描述】:

有没有办法用 Meteor Spacebars 实现以下逻辑?

伪代码,Meteor 和 Django's forloop 的混合体:

{{#each jobs}}
    {{>jobItem }}
    {#if not forloop.last }}<hr>{{/if}}
{{/each}}

【问题讨论】:

  • 这应该可以通过 Meteor 原生实现 - 请在 this issues 上投票。规范的做法在meteor-talk 上讨论。

标签: meteor spacebars


【解决方案1】:

不幸的是{{each}} 不做索引。因此,您必须将更多信息传递回该项目以获取您需要的信息。例如,这可以将索引作为另一个字段放入您的返回对象中。

var returnArray = _.map(divisions, function(item, key) {
  return _.extend(item, {
    "index": key
  });
});

考虑到您只需要最后一个,您可能只想将一个属性附加到作业中的最后一个。创建一个只返回类似

的帮助函数
return _.extend(_.last(Jobs.find().fetch(), {"last": true})

那么你可以有一个{{#if last}}{{else}}&lt;hr&gt;{{/if}}。这样,所有没有价值的项目都会获得 hr,而你的项目确实有最后一个价值,不会。

您也可以在 CSS 中处理它。

hr:last-of-type { display: none }

您可能需要仔细检查它的语法。

【讨论】:

  • 您能否在 '.extend(.last(Jobs.find().fetch() ->), {"last": true} 中添加一个右括号)'?
  • 实际上,extend 的行甚至可能是错误的;该行将只返回一个对象,这肯定不是预期的行为 -> 模板需要对象数组
  • 现在each 有一个名为@index 的属性。
猜你喜欢
  • 2016-05-29
  • 2011-04-30
  • 2021-11-19
  • 1970-01-01
  • 2019-09-19
  • 1970-01-01
  • 1970-01-01
  • 2020-05-25
  • 1970-01-01
相关资源
最近更新 更多