Может ли компонент Vue вести себя как атрибуты шорткода WordPress - PullRequest
0 голосов
/ 05 июня 2019

Может ли компонент Vue вести себя как атрибуты шорткода WordPress? Например, в [wp-shortcode post_type="post"] я могу определить тип записи в шорткоде, и данные будут соответственно выбраны.

Может ли нечто подобное быть сделано в Vue? Например <grid-one type="posts" /> или <grid-one type="videos" />. Тип в теге grid-one изменит request.type в данных.

GridOne.vue

<template>
  <main class="site-content">
    <div class="container">
      <section v-if="posts.length" class="articles-list">
        <post-item
          v-for="post in posts"
          :key="post.id"
          :post="post"
        />
        <pagination
          v-if="totalPages > 1"
          :total="totalPages"
          :current="page"
        />
      </section>
    </div>
  </main>
</template>

<script>
import PostItem from '@/components/template-parts/PostItem'
import Pagination from '@/components/template-parts/Pagination'

export default {
  name: 'GridOne',
  components: {
    PostItem,
    Pagination
  },
  props: {
    page: {
      type: Number,
      required: true
    }
  },
  data() {
    return {
      request: {
        type: 'posts',
        params: { 
          per_page: this.$store.state.site.posts_per_page,
          page: this.page
        }, 
        showLoading: true 
      },
      totalPages: 0
    }
  },
  computed: {
    posts() {
      return this.$store.getters.requestedItems(this.request)
    }
  },
  methods: {
    getPosts() {
      return this.$store.dispatch('getItems', this.request)
    },
    setTotalPages() {
      this.totalPages = this.$store.getters.totalPages(this.request)
    }
  },
  created() {
    this.getPosts().then(() => this.setTotalPages())
  }
}
</script>

...