質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Vue.js

Vue.jsは、Webアプリケーションのインターフェースを構築するためのオープンソースJavaScriptフレームワークです。

Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

Q&A

解決済

1回答

5736閲覧

Vue.jsとLaravel間のデータの受け渡し

manaw

総合スコア7

Vue.js

Vue.jsは、Webアプリケーションのインターフェースを構築するためのオープンソースJavaScriptフレームワークです。

Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

0グッド

0クリップ

投稿2020/04/04 12:27

LaravelとVue.jsを使って課題のプロジェクトを作成しています。自力で頑張っていますが、数日間進めなくなってしまったのでお知恵を貸してください。

blade.phpからcomponent.vueのpropsにデータを渡し、それを展開して各項目を表示しています。
例(v-for="item in items") ({{item.name}}{{item.skill}}など)
ボタンをクリックしたら各itemのページに遷移したいのですが、その際にデータのid(item.id)を渡したいのですが、うまくいきません。

php

1blade.php 2 3<div class="index"> 4 <skills-component 5 v-bind:items="{{ $items }}" 6 </skills-component> 7</div>

Java

1SkillsConponent.vue 2 3<template> 4 <div> 5 <div v-for="item in items" :key="item.id"> 6 <div class="detail"> 7 <h3 class="title">{{ item.name }}</h3> 8 <h4 class="skill">{{ item.skill }}</h4> 9 <button v-on:click="goToDetail(item.id)" class="c-button">詳細</button> 10 </div> 11 </div> 12</template> 13 14<script> 15 import axios from 'axios'; 16 export default { 17 props: { 18 items: { 19 type: Array 20 } 21 }, 22 methods: { 23 goToDetail(id) { 24 axios.get('/items/show/' + id) 25 .then(function (response) { 26 console.log(response); 27 }) 28 .catch(function (error) { 29 console.log(error); 30 }); 31 } 32 } 33 } 34</script>

PHP

1web.php 2 3省略 4Route::get('/items/show/{id}', 'ItemsController@show'); 5省略

特にエラーが表示されるわけでもなく、画面は正常に表示されています。クリックしても無反応です。

開発環境
Mac
CentOs
Google Chrome

初心者の初歩的なミスかと思いますが、数日悩んでおりますので、お力をお借りできたら嬉しいです!

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ShintaroNomiya

2020/04/04 14:40

「うまくいかない」とはどういう状況でしょうか? 「idが渡せない」のか「クリックしてもページが遷移しない」のどちらかですか? もし後者ならgoToDetail(id)の中でページ遷移の処理を入れていないので当然な気がしますが… SPAでなくてよいのであればwindow.location.href = `/items/show/${id}`とかで動きませんか?
manaw

2020/04/05 06:20

ありがとうございます。状況をはっきりと伝えることができず、申し訳ありませんでした。 ページが遷移しないのですが、お答えいただいた内容に書き換えてもダメでした。試しにSkillsComponent.vueを丸ごと(https://www.ritolab.com/entry/171)こちらに書かれているSampleComponent.vueに置き換えてみたところ、表示はされますが、カウンターは無反応です。データの受け渡し云々の前に、<script></script>内のmethodsが機能していないようなのですが、もし何かお分かりになれば教えていただきたいです。
guest

回答1

0

自己解決

以前に作成したプロジェクトにて動作確認を行ったところ、component.vueは全て問題なく表示されるものの、イベントは全て発火しませんでした。そのため、該当のコード以外に問題があると判断し関連するファイルを探したところ、views-layouts-app.blade.phpのheadタグとbodyタグの両方でapp.jsを読みこんでしまっていました。bodyタグ内の記載を削除したところ、正常に動作しました。

投稿2020/04/05 13:41

manaw

総合スコア7

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問