2016-06-27 10 views
1

ハンドルバーのネストされた式に各インデックスまたはキーを渡す方法はありますか?ハンドルバー:それぞれのインデックスをネストされた式に渡す

//Not working 
    {{#each thumbs}} 
     <img src="{{src}} data-large="{{../[email protected]}}" alt=""> 
    {{/each}} 

//Working with manual passed array index 
    {{#each thumbs}} 
     <img src="{{src}} data-large="{{../images.2.src}}" alt=""> 
    {{/each}} 

遊び場:https://codepen.io/anything/pen/LZxwVL

答えて

2

これは、とsubexpressionsで行うことができます。

ルックアップヘルパーは、eachループ内の特定のインデックスでイメージのハッシュを取得できます。そのオブジェクトでは、lookup srcプロパティが必要です。だからここに行く:

{{#each this.thumbs}} 
    <p>SRC: {{src}}</p> 
    <p>LARGE SRC:{{lookup (lookup ../images @index) "src"}} 
{{/each}} 

あなたはmodified demoの仕事でそれを見ることができます。

+0

ありがとうございます@hashchange! –

+0

@AdrianFlorescu私の喜び:) – hashchange

1

私はこれを達成するために、カスタムヘルパーメソッドを作成しました:

/** 
* Iterates over an array (like the native {{each}} helper, 
* but adds to properties to each object: "_index" (a 0-based index) and "_position" (1-based index) 
*/ 
Handlebars.registerHelper('iter', function(context, options) { 
    var fn = options.fn, inverse = options.inverse; 
    var ret = ""; 

    if(context && context.length > 0) { 
     for(var i=0, j=context.length; i<j; i++) { 
      ret = ret + fn(_.extend({}, context[i], { _index: i, _position: i + 1 })); 
     } 
    } else { 
     ret = inverse(this); 
    } 
    return ret; 
}); 

このヘルパーメソッドは、単純に(メンバーに_indexを追加し、 _position)を渡したオブジェクトに渡します。あなたがこの方法テンプレートを使用することができます

を(私が誤って既存のメンバーを上書きしないためにそれらをプレフィックスすることにしました。):

{{#each thumbs}} 
    <img src="{{src}} data-large="{{../[email protected]}}" data-index"={{_index}}" data-position"={{_position}}" alt=""> 
{{/each}} 

しかし、私はあなたがここに_positionを必要としないと思います。

+0

そして、私は上記の質問に基づいてこれをどのように使用しますか?ありがとうございました! –

+0

回答に使用例を追加しました。 – Eytibi

+0

あなたは私の質問が間違っていると思います。問題はネストされた式に渡されない@key変数にあります: 'Error:5行目の解析エラー: ... GE SRC:{{../[email protected]}} {{/ each }} ' –

関連する問題