【问题标题】:Laravel: Dynamically pass data to Vue Component from Blade TemplateLaravel:从 Blade 模板动态地将数据传递给 Vue 组件
【发布时间】:2019-12-10 16:37:42
【问题描述】:

我正在尝试将动态数据从刀片模板传递给 Vue 组件,但没有成功也没有错误,

以下是我的代码,谁能请问是什么问题,我做错了什么。

app.js

require('./bootstrap');
window.Vue = require('vue');

Vue.component('slider', require('./components/HomeSlider.vue').default);

const app = new Vue({
  el: '#app'
});

HomeSlider.vue

<template>
 <slick ref="slick" class="home-slider" :options="slickOptions">
        <div class="image" v-for="slide in slides" :key="slide.id">
            <a href="">
                <img :src="slide.src" alt="option image" />
            </a>
        </div>
    </slick>
</template>
<script>
 import '../../../node_modules/slick-carousel/slick/slick.css';
    import '../../../node_modules/slick-carousel/slick/slick-theme.css';
    import '../../sass/slick.scss';
    import Slick from 'vue-slick';
    export default {
        components: {
            Slick
        },
        props: ['slides'],
        data() {
            return {
                slickOptions: {
                    autoplay: 1
                }
            };
        },
        mounted() {
            // console.log(this.slides)
        }
    }
</script>

home.blade.php

@extends('layouts.app')
@section('content')
 <slider v-bind="slides"></slider>
@endsection

HomeController.php

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class HomeController extends Controller {
    /**
        * Create a new controller instance.
        *
        * @return void
    */
    public function __construct() {
    }

    /**
        * Show the application dashboard.
        *
        * @return \Illuminate\Contracts\Support\Renderable
    */
    public function index() {
        $slides = [
            ['id' => 1, 'image' => '1.jpg'],
            ['id' => 2, 'image' => '2.jpg'],
            ['id' => 3, 'image' => '3.jpg'],
        ];
        return view('home', compact('slides'));
    }
}

【问题讨论】:

  • 发送数据作为道具。 :options={{slides}}
  • @KaranSadana 你能解释一下如何
  • 只需在 slider.vue 组件中添加 prop 并像我在上面的评论中所说的那样传递 dat

标签: laravel vue.js


【解决方案1】:

试试这个

home.blade.php

@extends('layouts.app')
@section('content')
 <slider :slides="{{ json_encode($slides) }}"></slider>
@endsection

现在在滑块的道具中显示slides

【讨论】:

    猜你喜欢
    • 2016-02-05
    • 2021-11-14
    • 2014-07-17
    • 2019-01-03
    • 2019-10-07
    • 2020-11-12
    • 2018-05-28
    • 2021-06-29
    • 2014-05-20
    相关资源
    最近更新 更多