私は自分のプロジェクトでテンプレートとしてHandlebarsを使用しています。ハンドルバーの "各"ヘルパーの現在の反復のインデックスを取得する方法はありますか?各ヘルパーのハンドルバーのインデックスを取得するには?
答えて
新しいバージョンのHandlebarsインデックス(またはオブジェクト反復の場合はキー)は、標準の各ヘルパーでデフォルトで提供されます。
から抜粋:https://github.com/wycats/handlebars.js/issues/250#issuecomment-9514811
電流アレイアイテムが@Indexを介して、今いくつかの時間に利用可能となっているのインデックス:オブジェクトの反復のため
{{#each array}}
{{@index}}: {{this}}
{{/each}}
、代わり@key使用:
{{#each object}}
{{@key}}: {{this}}
{{/each}}
申し訳ありませんがdownvote。アップボートと思われていたが、私が気づいた時点でロックされていた。 – Undistraction
私はさまざまな状況でこれを実装しようとしましたが、毎回コンソールでエラーが発生します。 'Uncaught SyntaxError:予期しないトークン、 ' – waltfy
waltercarvalhoと同じ問題が発生しました。 – dmkc
これはEmberの新しいバージョンで変更されました。配列の場合
:
{{#each array}}
{{_view.contentIndex}}: {{this}}
{{/each}}
#eachブロックは、もはやオブジェクト上で動作しますように見えません。私の提案は、あなた自身のヘルパー機能をロールバックすることです。
ありがとうございましたtip
私はこれが遅すぎることを知っています。しかし、私は次のコードでこの問題を解決:
Javaスクリプト:
Handlebars.registerHelper('eachData', function(context, options) {
var fn = options.fn, inverse = options.inverse, ctx;
var ret = "";
if(context && context.length > 0) {
for(var i=0, j=context.length; i<j; i++) {
ctx = Object.create(context[i]);
ctx.index = i;
ret = ret + fn(ctx);
}
} else {
ret = inverse(this);
}
return ret;
});
はHTML:
:
{{#eachData items}}
{{index}} // You got here start with 0 index
{{/eachData}}
あなたは1とあなたのインデックスを開始したい場合は、次のコードを実行する必要がありますJavascript:
Handlebars.registerHelper('eachData', function(context, options) {
var fn = options.fn, inverse = options.inverse, ctx;
var ret = "";
if(context && context.length > 0) {
for(var i=0, j=context.length; i<j; i++) {
ctx = Object.create(context[i]);
ctx.index = i;
ret = ret + fn(ctx);
}
} else {
ret = inverse(this);
}
return ret;
});
Handlebars.registerHelper("math", function(lvalue, operator, rvalue, options) {
lvalue = parseFloat(lvalue);
rvalue = parseFloat(rvalue);
return {
"+": lvalue + rvalue
}[operator];
});
HTML:
{{#eachData items}}
{{math index "+" 1}} // You got here start with 1 index
{{/eachData}}
ありがとうございました。以降ハンドルバージョン3.0で
、この特定の例で
{{#each users as |user userId|}}
Id: {{userId}} Name: {{user.name}}
{{/each}}
は、ユーザは、現在のコンテキストと同じ値を有し、useridは、反復のインデックス値を有するであろう。 参照してください - ブロックヘルパーセクションでhttp://handlebarsjs.com/block_helpers.html
アレイ:
{{#each array}}
{{@index}}: {{this}}
{{/each}}
を使用すると、オブジェクトの配列を持っている場合...あなたは子供を反復処理することができます
{{#each array}}
//each this = { key: value, key: value, ...}
{{#each this}}
//each [email protected] and value=this of child object
{{@key}}: {{this}}
//Or get index number of parent array looping
{{@../index}}
{{/each}}
{{/each}}
オブジェクト:
を{{#each object}}
{{@key}}: {{this}}
{{/each}}
あなたが {{@../key}}
- 1. ハンドルバー各反復子エラー
- 2. Ember.js:{{#each}}ヘルパーを使用してコレクションのアイテムをループする際にインデックス値を取得する方法は?
- 3. Emberjsハンドルバー計算されたプロパティにバインドされたときの各ヘルパーの速度が遅い
- 4. ハンドルバーのヘルパー出力がテンプレートに表示されない
- 5. ハンドルバーは2つの異なるプロパティセットを持ちます。ヘルパーか部分?
- 6. NSArrayでインデックスを取得するには?
- 7. 行インデックスを取得するには?
- 8. ベクトル内の各実行の最後の要素のインデックスを取得します
- 9. ヘルパー内のテンプレート変数を取得
- 10. フレックスタブを取得するインデックス
- 11. アンドロイドのリストビューアイテムのインデックスを取得する
- 12. Javascriptヘルパーのform_tag IDの取得
- 13. ハンドルバーをアンインストールするには?
- 14. 各月のカウントを取得
- 15. HTMLTableObjectの各値を取得
- 16. 壁やニュースフィードの各エントリの写真を取得するには?
- 17. Matlabニューラルネットワークの各反復後にウェイトマトリックスを取得するには?
- 18. インデックスと剰余燃えさしでハンドルバー
- 19. データバインド後のGridViewの列のインデックスを取得するには
- 20. 行のインデックスを取得する
- 21. インデックスのマルチテキストを取得するselect Jquery
- 22. tabBarのインデックスを取得する
- 23. ドロップダウンリストのインデックスを取得する方法
- 24. Jqueryタブのインデックスを取得する
- 25. インデックスでDataViewの行を取得する
- 26. foreachの配列インデックスを取得する
- 27. Java LinkedList - オブジェクトのインデックスを取得する
- 28. リッチの親インデックスを取得する:subTable
- 29. aureliaのリピート親インデックスへの参照を取得するには?
- 30. javascript:連想配列のオブジェクトのインデックスを取得するには?
で親オブジェクトの
key
にアクセスできるオブジェクトを入れ子にしている場合あなたが行うには、独自のヘルパーを登録することができます例えば:https://gist.github.com/1048968またはhttp://pastebin.com/ksGrVYkz – stusmithhandlebars-1.0.rc.1.jsで動作するGistの例に、もう1つのソリューションを追加しました。 https://gist.github.com/1048968#gistcomment-617934 – mlienau