Как проверить, содержит ли коллекция объект с определенным ключом в руле - PullRequest
1 голос
/ 31 мая 2019

Предполагая, что custom_fields содержит эти данные, и я хочу выяснить, есть ли у него элемент / объект с именем = "hide_options". Я хочу передать это компоненту.

ПРЕДУПРЕЖДЕНИЕ Использование вхождений таким способом - это хак . Если имя недостаточно уникально, вы можете получить ложные срабатывания

[
  {"id":"12","name":"hide_options","value":"true"}, 
  {"id":"13","name":"state","value":"colorado"},
  {"id":"14","name":"city","value":"colorado, springs"}
] 

Самое близкое, что я придумал, это:

шаблоны \ компоненты \ продукты \ product-view.html

{{> components/products/conditionallyVisibile 
    hideOptions=(occurrences (join (pluck product.custom_fields "name") ",") "hide_options") 
}}

компоненты / продукты / условно Visibile.html

<div>
    hideOptions {{ hideOptions }}
</div>

Мне не хватает более простого помощника Array или Collection, который мог бы сделать это проще? Большинство помощников Array / Collection являются помощниками блоков.

EDIT: Мне не хватало значительно более простого способа сделать это с помощью Filter Array Helper

{{#filter product.custom_fields "hide_options" property="name"}}
    {{> components/products/conditionallyVisibile hideOptions=true }}
{{else}}
    {{> components/products/conditionallyVisibile hideOptions=false }}
{{/filter}}

РЕДАКТИРОВАТЬ 2:

скалярная форма

(occurrences (join (pluck product.custom_fields "name") ",") "hide_options")

почти эквивалентен блочной форме

{{#inArray (pluck product.custom_fields 'name') 'hide_options' }}

...