Как отобразить данные, возвращенные из ресурса Laravel, в компоненте Vue? - PullRequest
0 голосов
/ 16 июня 2020

Я практикую Vue и не понимаю, как обрабатывать передачу данных. У меня есть ссылка в моем Vue компоненте <a class="btn btn-success" :href="'/projectpage/' + project.id">Bid</a> Благодаря этому вопросу . В моей сети маршрутов. php У меня есть этот маршрут Route::get('/projectpage/{id}', 'ProjectController@projectPage');. В моем ProjectController у меня есть эта функция.

    public function projectPage($id){
       $project = Project::findOrFail($id);
       // return new ProjectResource($project);
       return view('project',['project'=>$project]);
}

Когда я возвращаю ProjectResource, он отображает JSON Data, и когда я возвращаю представление, он отображает представление и данные, которые я хочу отобразить. Однако я хочу отобразить данные из компонента vue. Компонент vue для извлечения данных и последующего отображения их на блейд-странице, например, <component></component>. Как мне go об этом?

1 Ответ

0 голосов
/ 16 июня 2020

Чтобы сделать то, что вы просите, вам нужно будет использовать ax ios. Вы можете установить его с помощью npm install axios

Затем проверьте свой resource/js/bootstrap.js файл, чтобы убедиться, что вы импортировали ax ios.

/**
 * We'll load the axios HTTP library which allows us to easily issue requests
 * to our Laravel back-end. This library automatically handles sending the
 * CSRF token as a header based on the value of the "XSRF" token cookie.
 */

window.axios = require('axios');

window.axios.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest';

/**
 * Next we will register the CSRF Token as a common header with Axios so that
 * all outgoing HTTP requests automatically have it attached. This is just
 * a simple convenience so we don't have to attach every token manually.
 */

let token = document.head.querySelector('meta[name="csrf-token"]');

if (token) {
    window.axios.defaults.headers.common['X-CSRF-TOKEN'] = token.content;
} else {
    console.error('CSRF token not found: https://laravel.com/docs/csrf#csrf-x-csrf-token');
}

И в вашем файле resource/js/app.js add

require("./bootstrap");

Run npm run dev

Наконец, добавьте скрипт в ваш основной файл .blade <script src="{{ asset('js/app.js') }}"></script>


В конце просто позвоните через ax ios из метода

axios.get('route')
     .then(response => {
          console.log(response.data); // store this in a variable
      })
      .catch(error => {
          console.log(error.response.data);
      });

Вызов вашего компонента

<YourComponent v-for="list in lists" />


Держите меня в курсе в комментариях ниже. Ура!

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