Vue JS: перебор встроенного атрибута объекта

#javascript #json #vue.js #object #vue-component

#javascript #json #vue.js #объект #vue-компонент

Вопрос:

Я новичок в vue.js так что это может быть простой вопрос, но, к сожалению, я не пришел к результату самостоятельно.

Итак, это основа моего шаблона:

 <template v-for="page in $props.data.pageInfo" >
  <div class="overviewItem" :key="page.uid" :data-cat=" **looping through the object to get both cat_id's ** ">
    <div v-for="(cat, index) in page.categories" :key="index" >
      <p v-if="index === 0" class="subtitle">
        {{ cat.title }}
      </p>
    </div>
  </div>
</template>
 

{{ page.categories }} имеет следующие значения в первом .overviewItem:

 [
{
  "cat_id": 1,
  "title": "Kategorie 1"
},
{
  "cat_id": 2,
  "title": "Kategorie 2"
}
]
 

Цикл для получения субтитров работает отлично, но я не могу найти ни одного варианта, как выполнить цикл по этому объекту, чтобы получить два значения атрибута data-cat .

Комментарии:

1. Удалите v-if on <p> , который позволяет отображать только первый элемент и помещать data-cat его в цикл <div>

2. Мне нужно, чтобы каталог данных находился снаружи (в .overviewItem). Внутри я действительно хочу, чтобы отображался только первый заголовок, который у меня работает нормально.

Ответ №1:

Используется .map для создания нового массива только cat_id из, а затем объединить их вместе с пробелом между ними:

 <div
   class="overviewItem"
   :key="page.uid"
   :data-cat="page.categories.map(c => c.cat_id).join(' ')"
>
...
</div>