4

我覺得我可能會爲一個簡單的問題做很多事情。Emberjs在模板中的增量

如果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}} 

所以希望,我錯了,有一個更簡單的方法來做到這一點。可能還有一種更簡單的方法可以在模板中進行「簡單」處理。不確定是否可能存在異議,因爲模板中可能存在「非常多」的邏輯。

任何有關這方面的指導將不勝感激。

謝謝!

+0

你有什麼用例指數模板@ user2517182 – Sushant

+1

'和可能的一個更簡單的方式做「簡單」處理在template.'這將是一個沒有。把手模板被設計成無邏輯的。你應該在你的代碼中做任何和所有的處理。 – GJK

+0

如果你有東西'[]',你想顯示1在'東西[0]'在你的模板,然後2在'東西[1]',等... – user2517182

回答

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

+0

感謝您的回答。我認爲有序列表可能有點限制。我不能做'foo在數組1中','foo呢!在數組中是2,'foo three!在數組中是3。但我想這就是爲什麼有幫手。 :-) – user2517182

+1

作爲灰燼1.11,你可以做'{{#each模型|富指數|}}'來得到當前的循環索引。 – GJK

2

如果您需要訪問的每個塊使用索引:

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

請參閱:This Answer

然後,您可以使用模板助手將索引轉換爲位置。

JSBin Example

3

雖然學習灰燼,我掙扎了很多與這個問題了。我創建了一個要點,告訴你如何使用一個非常簡單的Handlebars輔助方法來完成這項工作。

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

然後所有你需要做的就是把這個幫手與{{your-helper-method index}};它應該輸出增加1的索引或者你在輔助方法中設置的增量。

+0

這真的解決了這個問題,我不知道爲什麼它不是更高。這比任何其他解決方案都要好。感謝你的要求,爲我節省了很多時間! –