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

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

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

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

Q&A

解決済

1回答

631閲覧

vue.jsでcomponentに渡す変数を元に条件分岐をしたい

neginattofan

総合スコア66

Vue.js

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

0グッド

0クリップ

投稿2020/05/13 05:03

前提・実現したいこと

laravel5.8
vue.js

PictureComponentに渡ってくる pic="{{ $product->pic1}}" が存在しているかしていないかで条件分岐をしたいです。

もしpic="{{ $product->pic1}}"が存在しているなら

<img :src="/storage/{{pic }}" class="img">

を表示させて、
もしpic="{{ $product->pic1}}"が存在していないなら、

<img :src="data.image" class="img">

を表示させたいです。

該当のソースコード

blade

1 <div id="picture"> 2 <picture-component pic="{{ $product->pic1 }}"></picture-component> 3 </div>

PictureComponent

1... 2 <div class="img-container"> 3 <input type="file" ref="file" @change="setImage" class="input" name="pic1" /> 4 <div v-if=""></div> 5 <img :src="data.image" class="img"> 6 <div v-else></div> 7 <img :src="/storage/{{pic}}" class="img"> 8 </div> 9 </div> 10...

js

1 2window.Vue = require('vue'); 3 4Vue.component('picture-component', require('./components/PictureComponent.vue').default); 5 6const picture = new Vue({ 7 el: '#picture', 8}); 9

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

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

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

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

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

guest

回答1

0

自己解決

srcにjavascriptから入れることで解決しました。

<template> <div class="c-product__item" > <div class="c-product__info"><div class="c-product__name">画像</div><div class="c-product__warning">必須</div></div> <div class="img-container"> <input type="file" ref="file" @change="setImage" class="input" name="pic1"/> <img :src="/storage/ + pic" class="img"> </div> </div> </template> <script> export default { props: [ 'pic', ], data() { return { data: { image: "", name: "", } }; }, methods: { setImage(e) { const files = this.$refs.file; const fileImg = files.files[0]; const preview = document.querySelector('img'); if (fileImg.type.startsWith("image/")) { this.data.image = window.URL.createObjectURL(fileImg); this.data.name = fileImg.name; this.data.type = fileImg.type; console.log(this.data.image); console.log(this.data.name); console.log(this.data.type); preview.src = this.data.image; } }, } }; </script> <style scoped> .img-container { width: 300px; height: 300px; position: relative; } .input { position: absolute; opacity: 0; height: 100%; width: 100%; } .img { width: 300px; height: 300px; background: #f2f2f2; object-fit: cover; } </style>

投稿2020/05/14 04:04

neginattofan

総合スコア66

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問