简体   繁体   English

Laravel 8 将数据从刀片传递到 Vue 3

[英]Laravel 8 pass data from blade to Vue 3

I try to pass data from Laravel blade to Vue with props and I get undefined in console.我尝试使用道具将数据从 Laravel 刀片传递到 Vue,但我在控制台中未定义。 I tried also我也试过

<example-component :course="{{ $course }}"></example-component>
<example-component course="{{!! $course !!}}"></example-component>

index.blade.php index.blade.php

@extends('layouts.app')

@section('content')
    <div id="app">
    
    </div>
    
    <example-component course="{{ $course }}"></example-component>

    <script src="{{asset('js/course/app.js')}}"></script>
@endsection

app.js应用程序.js

import { createApp } from 'vue';
import App from './components/App.vue'
import router from '../../router'
createApp(App).use(router).mount("#app")

App.vue应用程序.vue

<template>
{{ course }}
</template>

<script>
export default {
props: ['course'],
mounted() {
console.log(this.course)
}
}
</script>

You've to create a component named ExampleComponent and registered globally:您必须创建一个名为ExampleComponent并在全局范围内注册的组件:

<template>
{{ course }}
</template>

<script>
export default {
props: ['course'],
mounted() {
console.log(this.course)
}
}
</script>

And App.vue和 App.vue

<template>
<div>App</div>
</template>

<script>
export default {

}
</script>

app.js应用程序.js

import { createApp } from 'vue';
import App from './components/App.vue'
import ExampleComponent from './components/ExampleComponent.vue'
import router from '../../router'
let app=createApp(App)
app.component('example-component',ExampleComponent)
app.use(router).mount("#app")

Your component should be inside the div with app as id where the vue app is mounted:您的组件应该在 div 中,其中app为 id,安装了 vue 应用程序:

@extends('layouts.app')

@section('content')
    <div id="app">
       <example-component course="{{ $course }}"></example-component>
    </div>
    
    

    <script src="{{asset('js/course/app.js')}}"></script>
@endsection

The best practice is to make you component call an API to get the course.最佳做法是让您的组件调用 API 来获取课程。

If it's not worth an API try to pass the $course as attr to your #app element.如果不值得 API 尝试将$course作为attr传递给您的 #app 元素。 Then you can get your course with getAttribute然后您可以使用getAttribute获取您的课程

<div id="app" course="{{json_encode($course)}}"></div>

in vue.js:在 vue.js 中:

document.getElementById('app').getAttribute('course')

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM