Emberjs在模板中递增

use*_*182 4 helper increment handlebars.js ember.js grunt-ember-templates

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

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

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

{{index+1}}
Run Code Online (Sandbox Code Playgroud)

根据我的理解,解决方案是编写如下的辅助函数.

import Ember from 'ember';

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

export default Ember.HTMLBars.makeBoundHelper(plusOne);
Run Code Online (Sandbox Code Playgroud)

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

{{plus-one index}}
Run Code Online (Sandbox Code Playgroud)

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

任何有关这方面的指导将不胜感激.

谢谢!

Gra*_*pho 6

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

当然,人们会想知道为什么你想要为任何索引添加+1呢?可能以非零方式标记您的itterations?在这种情况下,你不会渲染有序列表吗?

<ol>
  {{#each model as |foo|}}
    <li>{{foo.bar}}</li>
  {{/each}}
</ol>
Run Code Online (Sandbox Code Playgroud)

导致:

  1. 我是个骗子
  2. 我也是个骗子!
  3. 我是三个人!

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

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

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

然后

{{#each foosWithCount as |foo|}}
  <p>I'm {{foo.name}} and I'm #{{foo.count}}</p>
{{/each}}
Run Code Online (Sandbox Code Playgroud)

导致:

我是Foo而我是#1

我是男人,我是#2

我是楚,我是#3