0

次の構造例を見てください。

{% set paths = {
                   ...
                   'js': {
                           ...
                           'jquery': {
                                      'version': '1.7.2',
                                      'cdn': 'https://ajax.googleapis.com/ajax/libs/jquery/{{paths.js.jquery.version}}/jquery.min.js',
                                      'fallback': ....
                                      }
                          }
               }
%}

アクセスするには、通常、次のようなものを使用します。

 <script src="{{paths.js.jquery.cdn}}"></script>

問題:

補間された変数は認識されません。次のような結果が得られます...libs/jquery/%7B%7B%paths.js/jquery.version7D%7D/jquery.min.js...

私はもう試した:

  • 'a': 'text{{b}}text'
  • 'a': {{ ('text' ~ b ~ 'text') }}
  • 'a': "{{ ('text' ~ b ~ 'text') }}"
  • 'a': "{{ (['text', b, 'text'] | join }}"
  • 'a': "{{ (['text', {{b}}, 'text'] | join }}"
  • そしてもっと私が忘れてしまった

私は属性()を知っています

それに関するドキュメントはあまりありませんが、私が見たところ、次のようなものでなければなりません。

attribute(paths, attribute(js, attribute(jquery, cdn)))

1 つのレベルでは問題ありませんが、任意のレベルの深さではありません。誤解している場合は訂正してくださいattribute()

4

1 に答える 1

0

'a': ('text' ~ b ~ 'text') は実際には正しいですが、式を中括弧で囲むことはできません (既に式、変数定義の中にいるためです)。

正しい方法:

{% set paths = {
                   ...
                   'js': {
                           ...
                           'jquery': {
                                      'version': '1.7.2',
                                      'cdn': ('https://ajax.googleapis.com/ajax/libs/jquery/' ~ paths.js.jquery.version ~ '/jquery.min.js'),
                                      'fallback': ....
                                      }
                          }
               }
%}

しかし、ここには単純な設計ミスがあります。レンダラー/パーサーがcdn属性定義に来るとき、pathsまだ設定されていません。これを回避する方法の 1 つは、最初に別の変数を宣言することです。

{% set params=  {
                   'jqueryversion': '1.7.2'
                }
%}

{% set paths = {
                   ...
                   'js': {
                           ...
                           'jquery': {
                                      'cdn': ('https://ajax.googleapis.com/ajax/libs/jquery/' ~ params.jqueryversion ~ '/jquery.min.js'),
                                      'fallback': ....
                                      }
                          }
               }
%}

明らかにpaths.js.jquery.cdn一度だけ使用する場合は、変数の値を必要な場所にハードコーディングし、変数を補間します。

<script src="https://ajax.googleapis.com/ajax/libs/jquery/{{params.jqueryversion}}/jquery.min.js"></script>
于 2012-08-08T10:07:34.017 に答える