Я активно искал ответ на этот вопрос, поэтому, надеюсь, я не пропустил очевидное.Оператор поиска, чтобы включить частичное на Handlebars
Я использую ручки для перебора массива объектов и выбора частичного представления в зависимости от свойства на каждом объекте.
Я видел документацию для динамических партикулов, а также для оператора поиска и ряд пояснений в Интернете, но я не могу понять, как используются .
и ..
или относятся к текущему контексту.
я ожидал бы следующий код
{{#each data as |item|}}
{{> (lookup item 'type') }}
{{/each}}
искать типа собственности на каждого объекта в массиве, и включают в себя частичное с этим именем, но поиск вычисляет undefined
.
Я видел примеры, показывающее это вместо
{{> (lookup . 'property') }}
так мои вопросы:
- Что такое правильный способ обратиться к
item
в поиске? - Что
.
и..
обратитесь к?
Спасибо.
EDIT: Добавлен объект данных и шаблон от фактического кода (объект данных был уменьшен и фактическое имя сущности изменен на «пункт», но в противном случае фактического код)
Из данных
{
"_links": {
"self": { "href": "/item/342" }
},
"itemId": "342",
"datetime": "2012-10-06T04:13:00+00:00",
"itemType": "ITEM_TYPE",
"content": {
}
},
С шаблон
{{#each data as |item|}}
{{> (lookup item 'itemType') }}
{{/each}}
Ошибка
{
description: undefined,
fileName: undefined,
lineNumber: undefined,
message: "The partial undefined could not be found",
name: "Error"…
}
Ваш '# each' смотрит на меня, как будто он должен работать. Возможно, если вы поделитесь своим объектом данных, мы сможем выяснить, в чем проблема. '.' является псевдонимом для' this' и указывает на объект с областью действия. '../' указывает один уровень на объект родительской области. – 76484
@ 76484 Спасибо. Вот что я подумал о '.' и' ..', но почему-то это не сработало для меня. Я ожидал, что либо «item», либо '.' передадут правильный объект для поиска, но это не так. Я добавил данные и сообщение об ошибке. – guioconnor
Копая глубже, я обнаружил, что контроллер фильтрует поля данных перед их передачей в шаблон. Синтаксис действительно работает, но мне пришлось переназначить поле itemType, чтобы оно было видимым. – guioconnor