Vue.js 2 Маршрут не работает.Переменная сообщений не доступна - PullRequest
0 голосов
/ 22 мая 2018

Первый проект в Vue.js.Работая с WP REST API.

, я могу отображать все свои сообщения, но как только я пытаюсь реализовать компонент Vue-router, который показывает все сообщения, home-post-list, умирает впервое v-if="posts" утверждение.

Ясно, что Vue думает, что постов нет, поэтому он ничего не отображает, но я не могу понять, как заставить его распознавать posts.Я не получаю никаких ошибок в консоли.

Когда я смотрю на Vue DevTools, я вижу:

https://www.dropbox.com/s/5441k1kw8ocmzad/Screenshot%202018-05-22%2010.43.24.png?dl=0

Итак, появляется router-viewработать правильно, но реквизит пуст.Я думал, что передаю реквизиты из основного экземпляра в дочерний компонент, но, возможно, я здесь что-то не так делаю.

Я покажу вам мой текущий код.

*** Компонент HomePostList

const HomePostList = Vue.component('home-post-list', {
  props:['posts'],
  template: `<div class="cell medium-8">
                        <div id="all-posts" class="all-posts" v-if="posts">
                        <div class="grid-x grid-margin-x">
                          <div class="post medium-6 cell" :class="{'medium-12':index===0}" v-for="(post,index) in posts">
                            <div class="img-bg" :class="{'first-post':index === 0}" :style="'background-image: url(' + post._embedded['wp:featuredmedia']['0'].source_url + ')'"></div>
                            <aside class="post-meta grid-x">
                              <div class="cell small-12">
                                <h3>{{ post.title.rendered | limitWords(6) }}</h3>

                              </div>
                              <div class="cell small-6">
                                <div class="post-category" v-for="(category,index) in post.cat_name.slice(0,1)">
                                  <a :href="'/category/' + category.slug">{{ category.cat_name }}</a>
                                </div>
                              </div>
                              <div class="cell small-6">
                                                <p><i class="fal fa-calendar-alt"></i> &nbsp;{{ post.date | parseTime }}</p>
                              </div>
                            </aside>
                          </div>
                        </div>
                    </div>
                  </div>`
});

*** Компонент SinglePost

const SinglePost = Vue.component('single-post-template', {
  props:['posts'],
  template: `<div class="cell medium-8">
                    <div class="grid-x grid-margin-x">
                        <p>Single Post here</p>
                    </div>
                  </div>`
});

*** Маршруты и экземпляр

const routes = [
  {
        path: '/',
        component: HomePostList,
        props: true
  },
  { 
        path: '/post/:postId',
        name: 'post',
        component: SinglePost
  }
];

const router = new VueRouter({
  routes
});

new Vue({
  el: '#app',
  router,
  data() {
    return{
      posts: [],
      searchTerm:'',
      searchPosts:[],
      currentRoute: window.location.pathname
    }
  },
  created (){
    var $this = this;
    axios
      .get(apiRoot + 'posts?_embed')
      .then(function (response) {
        $this.posts = response.data;
      }
    )
  },
  methods: {
    loadMorePosts: function(){
        var $this = this;
        axios
          .get(apiRoot + 'posts?_embed')
          .then(function (response) {
            $this.posts = response.data;
          }
        )
    },
  },
  computed:{

  },

});

*** index.php

<?php
/*
Template Name: Front
*/
get_header(); ?>

<!-- Home Page -->
<div class="grid-container">
  <div class="grid-x grid-margin-x">

    <!-- Main Post Container -->
    <router-view></router-view>

    <!-- Sidebar -->
    <div id="sidebar" class="cell medium-4">
      <sidebar-search></sidebar-search>
    </div>
  </div>
</div>

<?php get_footer();

1 Ответ

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

Я получил эту работу, добавив сообщения в элемент router-view.

<router-view :posts="posts"></router-view>

Не уверен, что это правильный способ сделать это, но он работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...