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

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

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

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

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

3回答

3094閲覧

VueJSとbxSliderを使用してスライドを正しく表示したい

TJMYK

総合スコア82

Vue.js

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

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

0クリップ

投稿2018/01/24 07:15

編集2018/01/24 09:44

現在、VueJSとbxSliderを使用してスライド画面を作成しています。
以下のコードを書きましたが、画像が縦に連なって1枚として表示されてしまいます。

html

1 <div id="picture_slider"> 2 <div v-for="picture in pictures"> 3 <img v-bind:alt="picture.name" v-bind:src="picture.url"> 4 </div> 5 </div>

おそらく、VueJSでの展開後、以下のようになっていることは想像がついたのですが、

html

1 <div id="picture_slider"> 2 <div> 3 <img alt="Name1" src="picture1.jpg"> 4 <img alt="Name2" src="picture2.jpg"> 5 <img alt="Name3" src="picture3.jpg"> 6 </div> 7 </div>

以下の形式にするためにどう書けばよいかわからず、躓いています。

html

1 <div id="picture_slider"> 2 <div> 3 <img alt="Name1" src="picture1.jpg"> 4 </div> 5 <div> 6 <img alt="Name2" src="picture2.jpg"> 7 </div> 8 <div> 9 <img alt="Name3" src="picture3.jpg"> 10 </div> 11 </div>

どのようにすればよろしいでしょうか。

追記:2018/01/24

現在、laravel5.5のVueJSでスライドを表示しようとしています。
現在のコードです。

html

1<template> 2 <div> 3 <div id="banner_slider"> 4 <div v-for="banner in banners"> 5 <img v-bind:alt="banner.name" v-bind:src="banner.url"> 6 </div> 7 </div> 8 </div> 9</template> 10 11<script> 12 export default { 13 name: "index-component", 14 mounted() { 15 // トップスライダー 16 $('#banner_slider').bxSlider({ 17 auto: true, // 自動スライド 18 infiniteLoop: true, // 無限ループ 19 pager: false, // ページャー非表示 20 autoHover: true, // マウスオーバー時に自動遷移を停止 21 }); 22 }, 23 created() { 24 this.fetchBanners(); 25 }, 26 data() { 27 return { 28 banners: [] 29 } 30 }, 31 methods: { 32 // バナー取得 33 fetchBanners() { 34 axios.get('/api/banners') 35 .then(response => { 36 this.banners = response.data 37 }) 38 .catch(e => { 39 this.errors.push(e) 40 }); 41 } 42 } 43 44 } 45</script> 46 47<style scoped> 48 49</style>

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

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

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

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

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

guest

回答3

0

ベストアンサー

はじめに言っておきますが、jQueryをVueの単一コンポーネントに組み込むことは良いことではありません。

まあ興味があったので、できるまでトライしてみました。
https://codesandbox.io/s/5vnx7lk104

ポイントは下記でしょう

import $ from "jquery" global.jQuery = $; window.jQuery = $; require("bxslider");

npm でjqueryとbxsliderはインストールしてください。
CDNで使っていると、きっとうまくいきません。

jQueryプラグインとして認識させるために

global.jQuery = $; window.jQuery = $;

が必要でした。

それらを認識してプラグインとして認識できるためにrequire("bxslider");ではないとダメでした。


ぜひ、こういうVue製のComponentを使ってください…。
https://github.com/search?o=desc&q=vue+swipe&s=stars&type=Repositories&utf8=%E2%9C%93
http://element.eleme.io/#/en-US/component/carousel

投稿2018/01/24 12:32

編集2018/01/24 12:32
sakapun

総合スコア888

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

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

TJMYK

2018/01/24 13:11

いろいろと、ありがとうございます。 Vue製のComponentを使用することにします。
guest

0

jQueryとの共存がうまくいってないようですね。
一番のキモは$('#picture_slider').bxSlider();を呼び出す場所です。
必ず、new Vue()した後にそれを記述するようにしてください。

サンプルコード

なお、おそらくJSの記述が悪いと思います(書く場所的なものも含め)ので、HTMLとJSを貼っていただかないとこれ以上サポートできないと思います。

投稿2018/01/24 09:25

sakapun

総合スコア888

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

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

TJMYK

2018/01/24 09:47

ありがとうございます。 現在のHTMLとJSコードを追加しました。 よろしければ、引き続きご指導をお願い致します。
guest

0

サンプルコードで意図したHTML構造は構築できているかと。

<template> <div id="picture_slider"> <div v-for="picture in pictures"> <img v-bind:alt="picture.name" v-bind:src="picture.url"> </div> </div> </template> <script> export default { data() { return { pictures: [ {alt: 'Name1', url: 'picture1.jpg'}, {alt: 'Name2', url: 'picture2.jpg'}, {alt: 'Name3', url: 'picture3.jpg'} ] } } } </script>

上記コードを実行して、例えば Chrome DevTools で確認すれば、以下の通りとなります。
イメージ説明

利用されているブラウザの開発者ツールで実際に構築されるDOMを確認しながら開発すると理解が深まってよろしいかと思います。

投稿2018/01/24 08:26

kozy4324

総合スコア37

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

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

TJMYK

2018/01/24 09:45

確認したところ、ゴールとする同様の構造になっておりました。 DOMを確認しながら開発を進めていきたいと思います。 ありがとうござます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問