частичный блок руля как шаблон кода - PullRequest
0 голосов
/ 07 мая 2018

Я использую gulp для предварительной компиляции .hbs.

Код внутри блоков должен быть вставлен в несколько мест. Проблема здесь в том, что вместо правильного значения, this назначается неопределенным:

Невозможно прочитать свойство 'match' из неопределенного

{{#>simpleName}}
{{getSimpleName (lookup ../this @key)}}
{{/simpleName}}

<ul class='{{list-votes}}'>
    {{#each list-items}}
        <hr/>
        <li>
            {{@key}}
            {{#each this}}
                <figure class='{{ @simpleName}}'>
                    <img class="{{getSimpleName (lookup ../this @key)}}__img" src="./images/{{getSimpleName .}}.png" alt="{{.}}" width="48" height="48"/>
                    <figcaption class="title header__title">{{.}}</figcaption>
                </figure>
            {{/each}}
        </li>
    {{/each}}
</ul>

getSimpleName - вспомогательная js-функция, возвращает измененную строку.

Разве я не могу использовать {{getSimpleName (lookup ../this @key)}} внутри частичных блоков?

1 Ответ

0 голосов
/ 07 мая 2018

Вы можете использовать это внутри частичного просмотра. Ниже мой код, и он работает.

MyList:

const list = [
    {
      name: "A:FN",
      ln: "A:LN"
    },
    {
      name: "B:FN",
      ln: "B:LN"
    }
  ]

Основной вид (list.handlebars):

{{#each list}}
  {{> sample}}

  From Master: LN: {{getSimpleName this.ln}} <hr/>
{{/each}}

Частичное представление (sample.handlebars):

From Partial: Name: {{getSimpleName this.name}} <br/>

Окончательный результат:

From Partial: Name: A:FN:ADDED 
From Master: LN: A:LN:ADDED
------------------
From Partial: Name: B:FN:ADDED 
From Master: LN: B:LN:ADDED
------------------

Надеюсь, у вас возникла конкретная проблема с поиском.

В качестве альтернативы вы можете достичь этого с помощью встроенных партиалов:

{{#*inline "sample"}}
  From Partial: Name: {{getSimpleName this.name}} <br/>
{{/inline}}


{{#each list}}
  {{> sample }}

  From Master: LN: {{getSimpleName this.ln}} <hr/>
{{/each}}
...