ハンドルバーで、のコレクションがあるとしnames
ます。どのようにできるのか
{{#each names}}
{{position}}
{{name}}
{{/each}}
ファーストネームは{{position}}
1、セカンドネームは2などです。コレクションのキーとして位置を絶対に保存する必要がありますか?
ハンドルバーで、のコレクションがあるとしnames
ます。どのようにできるのか
{{#each names}}
{{position}}
{{name}}
{{/each}}
ファーストネームは{{position}}
1、セカンドネームは2などです。コレクションのキーとして位置を絶対に保存する必要がありますか?
これは、組み込みの Handlebars @index 表記で行うことができます。
{{#each array}}
{{@index}}: {{this}}
{{/each}}
@index は、指定された配列内の各項目の (ゼロベースの) インデックスを提供します。
Razor ビュー エンジンでハンドルバーを使用している場合は、コンパイル エラーを回避するために @@index 表記を使用する必要があることに注意してください。
その他の組み込みヘルパーについては、http: //handlebarsjs.com/ を参照してください。
Handlebars.registerHelper("counter", function (index){
return index + 1;
});
使用法:
{{#each names}}
{{counter @index}}
{{name}}
{{/each}}
ネイティブのハンドルバー ヘルパーではこれを行うことはできませんが、独自のハンドルバー ヘルパーを作成することはできます。を呼び出しHandlebars.registerHelper()
て、一致させたい名前 (位置) を含む文字列と、現在の位置カウントを返す関数を渡すことができます。を呼び出すクロージャの位置番号を追跡できますregisterHelper
。position
テンプレートの例で動作する必要があるというヘルパーを登録する方法の例を次に示します。
JavaScript:
// Using a self-invoking function just to illustrate the closure
(function() {
// Start at 1, name this unique to anything in this closure
var positionCounter = 1;
Handlebars.registerHelper('position', function() {
return positionCounter++;
});
// Compile/render your template here
// It will use the helper whenever it seems position
})();
デモ用の jsFiddle を次に示します: http://jsfiddle.net/willslab/T5uKW/1/
ヘルパーは handlebarsjs.com で文書化されていますが、使用方法を理解するのに少し苦労しました。挑戦していただきありがとうございます。お役に立てば幸いです。
これが私の好ましい解決策です。コンテキストを拡張して位置プロパティを自動的に含めるヘルパーを登録します。次に、#each の代わりに新しいブロック ヘルパー (例: #iter) を使用します。
Handlebars.registerHelper('iter', function (context, options) {
var ret = "";
for (var i = 0, j = context.length; i < j; i++) {
ret += options.fn($.extend(context[i], {position: i + 1}));
}
return ret;
});
使用法:
{{#iter names}}
{{position}}
{{name}}
{{/iter}}
{{@index}}を使用する必要があるだけです
例:
{{#.}}
<li class="order{{@index}}"> counter: {{@index}}</li>
{{/.}}
リスト内のインデックスから値を取得できます。
{{#each list}}
@index
{{/each}}
これは私のために働く
{{#each posts}}
<tr>
<td>{{@index}} </td>
<td>{{name}}</td>
</tr>
{{/each}}
現在の方法、
Handlebars API V2 以降、既に@number
1 から始まるイテレータのインデックスが含まれています。
だから、これはあなたができることです。
{{#foreach names}}
{{@number}}
{{name}}
{{/foreach}}
参考:https ://ghost.org/docs/api/v3/handlebars-themes/helpers/foreach/