2

テンプレート (この場合はメール) に gulp と nunjucks を使い始めたところです。

モジュール/パーシャルを呼び出し、処理されるたびに属性に異なる値を割り当てるという問題を解決したいと考えています。

最初はforループの仕事のように見えますが、モジュールはテンプレート内で順番に呼び出されるとは限りません

モジュール内には、変数に割り当てられる属性があります。モジュールが使用されているセクションに応じて、これらの変数を異なる方法で解決したいと思います。

非常に基本的な例は次のとおりです-私が持っているインデックスファイルでは:

{% block content %}


<!-- logo start -->

{% include genericMod %}

<!-- logo end -->


<!-- some other section start -->

{% include someOtherMod %}

<!-- some other section end -->


<!-- hero start -->

{% include genericMod %}

<!-- hero end -->


{% endblock %}

そしてgenericMod自体で-:

<tr>

 <td class="full-width-image" align="{{align}}" ><img src="{{src}}" alt="{{alt}}"/></td>

</tr>

私が利用したい機能の種類は、「modKey」、つまりモジュール内の各変数内の変数を定義することです。

{{modKey.align}}

{{modKey.src}}

{{modKey.alt}}

次に、モジュールが呼び出されるたびに、そのキーを何らかの方法でモジュールに割り当てることができます。

<!-- logo start —&gt;

{% include genericMod "modKey": "logo" %}

<!-- logo end -->

したがって、上記は以下を生成します。

<tr>

 <td class="full-width-image" align="{{logo.align}}" ><img src="{{logo.src}}" alt="{{logo.alt}}"/></td>

</tr>

と:

<!-- hero start -->

{% include genericMod "modKey": "hero" %}

<!-- hero end -->

生成:

<tr>

 <td class="full-width-image" align="{{hero.align}}" ><img src="{{hero.src}}" alt="{{hero.alt}}"/></td>

</tr>

そのため、json ファイルを介してパイプされると、それぞれのデータが各属性変数に対してレンダリングされます。

"logo": {
    "alt": "some logo alt text",
    "href": "http://www.someurl.com",
    "align": "left"
  },
 "hero": {
    "alt": "some hero alt text",
    "href": "http://www.someotherurl.com",
    "align": "centre"
  }

明らかにそれは単なる仮説的な解決策ですが、実際に同様のことを達成する方法はありますか?

4

1 に答える 1

3

解決策は非常に簡単です。「set」を使用しようとしたときに、コンテキスト変数の値を変数名ではなく文字列に割り当てていました。

記録のために、これは機能します...

{% set data = logo %} 
{% include oneIncludeFile %} 
{% set data = hero %} 
{% include otherIncludeFile %}

インクルード ファイルは、たとえば {{ data.alt }} または {{ data.href }} を参照します。

マクロはこれを達成するためのより良い手段かもしれませんが:

{% macro foo(data) %} 
<a href="{{ data.href }}"><img src="{{ data.src }}" alt="{{ data.alt }}" /></a> 
{% endmacro %}

それから like{{ foo(logo) }}を呼び出して{{ foo(hero) }}、さまざまなデータ セットを渡します。

完全な説明はこちらにあります: https://github.com/mozilla/nunjucks/issues/779

于 2016-06-10T15:02:14.583 に答える