2012-08-07 26 views
1

使用Handlebars循環使用對象。我的問題是,我無法輕鬆地每x次迭代(%2或%3)添加一些代碼。使用Handlebars.js循環模數條件

我試過在How can I create conditional row classes using Handlebars.js?上提出的解決方案。它不起作用,因爲我使用的是名爲Meteor的框架,我的「集合」來自通過Meteor的MongoDB查詢。使用該解決方案,「上下文」等於整個Meteor上下文,我的集合無處可查...

我的第一個想法是在我的對象上創建一個名爲「eof」的新布爾屬性和一個把手條件會觸發一些更多的代碼,如果它等於true ...但我希望更清潔一些,而不是依賴於服務器端。

你會怎麼做?

非常感謝!

+0

我想,一個早已但我有太多的問題...我無法得到它的工作。主要原因是因爲我使用流星,而數據來自通過流星的Mongo查詢。我將編輯該問題並添加這些詳細信息。 – TigrouMeow 2012-08-09 01:24:37

+0

我不確定這是問題,代碼中已經有一個context = this。太糟糕了,我沒有找到一個乾淨的方式來做到這一點,甚至骯髒的方式是相當複雜的,甚至沒有工作。哇,我習慣自己編程(我的意思是,沒有使用任何「魔術」框架),它需要更多的時間,但至少一切都很容易實現。我開始擔心其他的發展。我需要來自Meteor團隊的擁抱來振作起來。 – TigrouMeow 2012-08-10 01:27:29

+0

也許這對你來說會很難,我想你需要知道Meteor是如何工作的,它不是100%的Handlbars翻譯。我把我的代碼的最後一個版本放在這裏https://gist.github.com/3309815,它似乎適用於Meteor的開發分支...所以是的,這個問題似乎很流星相關:( – TigrouMeow 2012-08-10 05:07:08

回答

2

請參閱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}}