【问题标题】:Loop modulo condition with Handlebars.js使用 Handlebars.js 循环取模条件
【发布时间】:2012-12-14 09:56:03
【问题描述】:

我正在使用 Handlebars 遍历对象。我的问题是,我无法在每 x 次迭代(% 2 或 % 3)中轻松添加一些代码。

我尝试了How can I create conditional row classes using Handlebars.js? 提出的解决方案。它不起作用,因为我使用的是名为 Meteor 的框架,而我的“集合”来自通过 Meteor 的 MongoDB 查询。使用该解决方案,“上下文”等于整个 Meteor 上下文,而我的收藏无处可寻……

我的第一个想法是在我的对象上创建一个名为“eof”的新布尔属性,如果它等于 true,将使用更多代码触发 Handlebars 条件......但我想要更干净且不依赖于服务器端。

你会怎么做?

非常感谢!

【问题讨论】:

  • 我已经试过了,但我有太多问题......我无法让它工作。主要原因是因为我使用的是 Meteor,而数据来自通过 Meteor 进行的 Mongo 查询。我将编辑问题并添加这些详细信息。
  • 我不确定是不是问题,代码中已经有一个 context = this 。太糟糕了,我没有找到一种干净的方式来做到这一点,即使是肮脏的方式也很复杂,甚至还没有工作。哇,我习惯了自己编写所有东西(我的意思是,不使用任何“魔法”框架),这需要更多时间,但至少一切都可以轻松实现。我开始担心其余的发展。我需要 Meteor 团队的拥抱让我振作起来。
  • 也许那对你来说会很难,我想你需要知道 Meteor 是如何工作的,它不是 100% Handlbars 翻译的。我把我的代码的最后一个版本放在这里gist.github.com/3309815,它似乎适用于 Meteor 的开发分支......所以是的,这个问题似乎与 Meteor 非常相关:(

标签: meteor handlebars.js


【解决方案1】:

见Tom Coleman's answer。

您可以添加一个类似于以下内容的模板助手:

Template.tableWithDifferentColorRows.helpers({
    modulo3: function() {
        return (this.index % 3) === 0;
    },
});
// in the html:
{{#each_with_index collection}}
    <div {{#if modulo3}}style='color:purple'{{/if}}>
         actual content...
    </div>
{{/each}}

【讨论】:

    猜你喜欢
    • 2023-03-05
    • 2012-08-09
    • 1970-01-01
    • 1970-01-01
    • 2012-12-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-22
    相关资源
    最近更新 更多