Blaze Spacebars Each - 预览下一个和上一个项目

时间:2016-02-17 23:28:38

标签: javascript meteor meteor-blaze spacebars

我有一个帮助器返回一个名为game的对象数组。在空格键我使用:每场比赛

我还有一个由用户点击的selectedGame的会话。

在模板中,我想显示阵列中下一个和上一个游戏的属性。我怎么能这样做?

到目前为止,似乎可行的是将游戏数组设置为Session gameArray。然后通过Session数组中对象的id查找selectedGame索引,然后使用nextGame和previousGame帮助程序访问那些通过索引++ / - 查询该数组的索引。这似乎非常迟钝,我在尝试设置Session并且不想进行多个db调用时也会收到有关参数大小的错误。感谢任何帮助。

1 个答案:

答案 0 :(得分:2)

如果您使用的是Meteor> = 1.2,您可以从每个模式中以某种方式使用索引函数,并将其作为上下文传递给您的每个模板:

<template name="main">
  {{#each iterateMe}}
    {{> iteratee i=@index}}
  {{/each}}
</template>

然后你可以注册一个帮手:

Handlebars.registerHelper('isNextOrPrev', function(val){
  var x = Session.get("selectedGame");
  if (!!val && typeof val == "number" && (val == (x-1) || val == (x+1)) )
    return true;
  return false;
});

并检查模板中的助手

<template name="iteratee">
  {{#if isNextOrPrev i}}
    <!--SHOW ADDITIONAL PROPERTIES HERE-->
  {{/if}}
</template>