5

我觉得我可能会为一个简单的问题做很多事情。

如果index = 0,我如何index在模板中增加。

理想情况下,我想做这样的事情。

{{index+1}}

据我了解,解决方案是编写如下所示的辅助函数。

import Ember from 'ember';

export function plusOne(params) {
  return parseInt(params) + 1;
}

export default Ember.HTMLBars.makeBoundHelper(plusOne);

然后在模板中您将执行以下操作。

{{plus-one index}}

所以希望,我错了,有一种更简单的方法可以做到这一点。并且可能是在模板中进行“简单”处理的更简单方法。不确定是否存在异议,因为模板中可能存在“太多”逻辑。

对此的任何指导将不胜感激。

谢谢!

4

4 回答 4

6

最简洁的答案是不。没有办法在模板中做任何真正的计算逻辑。帮助器是在模板中向索引添加 1 的最佳选择。

当然,有人会想知道你为什么要向任何索引添加 +1 呢?可能以基于非零的方式标记您的迭代?在那种情况下,您不会呈现有序列表吗?

<ol>
  {{#each model as |foo|}}
    <li>{{foo.bar}}</li>
  {{/each}}
</ol>

导致:

  1. 我是一个富
  2. 我也是福!
  3. 我是富三!

另一种可能性是(作为对每个索引使用助手的替代方法)

model: ['Foo', 'Man', 'Chu']

foosWithCount: Ember.computed.map('model', function(foo, index) {
  return Ember.Object.create({
    name: foo,
    count: index + 1
  });
});

然后

{{#each foosWithCount as |foo|}}
  <p>I'm {{foo.name}} and I'm #{{foo.count}}</p>
{{/each}}

导致:

我是Foo,我是#1

我是男人,我是#2

我是楚,我是#3

于 2015-04-16T19:48:10.623 回答
3

在学习 Ember 时,我也在这个问题上苦苦挣扎。我创建了一个要点,向您展示如何使用非常简单的 Handlebars 辅助方法来完成此操作。

https://gist.github.com/makabde/7d38d09d28b2a167b003

然后你所要做的就是用{{your-helper-method index}};调用这个助手。然后它应该输出增加 1 的索引或您在辅助方法中设置的任何增量。

于 2016-02-15T10:18:30.367 回答
2

如果您需要访问每个块中的索引,请使用:

<ul>
  {{#each model as |foo index|}}
   <li>{{index}} : {{foo.bar}}</li>
  {{/each}}
</ul>

见:这个答案

然后,您可以使用模板助手将索引转换为位置。

JSBin 示例

于 2015-04-16T20:51:22.237 回答
1

我使用ember-composable-helpers inc hepler

{{#each model as |foo index|}}
  {{inc index}}
{{/each}}
于 2019-05-08T05:49:41.497 回答